{
	"cells" : [
		{
			"cell_type" : "code",
			"execution_count" : 1,
			"metadata" : {},
			"outputs" : [],
			"source" : [ "from sympy import *\n", "init_printing(use_unicode=True)" ]
		},
		{"cell_type" : "markdown", "metadata" : {}, "source" : ["## Primitive variable system"]}, {
			"cell_type" : "code",
			"execution_count" : 2,
			"metadata" : {},
			"outputs" : [],
			"source" : [
				"# \\partial_t q + F \\partial_x q  + G \\partial_y q + H \\partial_z q = 0\n", "\n",
				"rho = Symbol('rho', positive=True) # density\n", "p = Symbol('P', positive=True) # pressure\n",
				"u = Symbol('u') # normal velocity\n", "v = Symbol('v') # transverse velocity\n", "w = Symbol('w') # transverse velocity\n",
				"s = Symbol('s') # passive scalar\n", "c = Symbol('c') # sound speed\n", "\n", "F = Matrix([\n",
				"[u,  rho,     0, 0,  0,     0],\n", "[0,  u ,      0, 0,  1/rho, 0],\n", "[0,  0,       u, 0,  0,     0],\n",
				"[0,  0,       0, u,  0,     0],\n", "[0,  rho*c*c, 0, 0,  u,     0],\n", "[0,  0,       0, 0,  0,     u]])"
			]
		},
		{
			"cell_type" : "code",
			"execution_count" : 3,
			"metadata" : {},
			"outputs" : [ {
				"data" : {
					"image/png" :
					    "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"
					    "ZwRknHvWrmQLjQCNk+dA+"
					    "VnWsUPKoYUU80IgEAI89td9JknjvMLFj5ybnJwAHQUhIASmEeBhCdrjhaa10yApRwi4IiDjdIVfxIXANAJVz9biKFIop8vTMKVzIsoHnh9BGp43ber"
					    "d0BOrqLSrjZwAhL6A3iOmz6DXuKejrre45xo3fIgkH3i9j4sHvrmWoZPlpjrwxCoy7SrGCUBCOV1e2lNEkw/8hnauvFQ/"
					    "Vt5TTyVoVzFOgJPtUNcA3mi8d/lKwu6JVWjatYyT28Gp303Nt459W1eyEbSsa+/"
					    "ylcTSE6vQtIsbJ4Zz+gs6FcL+prp3+U4pbkm+J1Z7oF3cOKE8M7ykz6BeuXMMeEk7aFl27/KVxNITq/"
					    "C0axjnHOWaP5c5ZSOW2bt8JXXiidWmadM4P+uRtjgX+NRa0+q03mxLTpeNt7nx3uWbi8Occp5YRaV9cCpN4/"
					    "yrR9niOaBPlsFc36azqamrpdnG0GQ9W83Yu3wlcffEKjDt6n5r1zrULdk2ata1d/"
					    "lKYueJVWjatdac2Q51S7aOCnXtXb6SkHliFZp2FePElCKU0+WlLTG4fLYJYuv/"
					    "peIvKu+JVXTal4uQXlb4GsUjOV1eJt3NP3YKIx8aKkcRBv4wzxDGufINu6v/"
					    "erbDLNr3Xr58+Qhi85D6Qygw7EbNatXpRSGwIQRgg3IqvSF9iBUhkESgypozSUmJQkAILEJAxrkILhUWAu0QkHG2w1qUhMAiBGSci+"
					    "BSYSHQDgEZZzusRUkILEKAximn0osgU2EhUBUBHjmUU+mqEKtyIbAOAR4SkVPpddjpLSHQBgGtOdvgLCpCYDECNc/"
					    "WXuAokpxKL1ZJvRe89QH6PCrKM75yaD1DzdVGTihCTqVnKKBVES99gK4cWq90rF7FOKEQOZVuZXUz6HjqA7Tl0LrXEbHA7Rtc3YbPKdVVMU4Q9XTme"
					    "0rmEvnR5IvGbwkdsQ5PubNp1zJObgenHCzZJ2n2TWEpJbSuJ5p80fgtpU9PubNpFzdODN3mxOsYwE2+wj/"
					    "GwNq8aPJF43etXsbvecpdinZx4wRIZnicX0+FOQY89a53ejT5ovFbSr+echehXcM454BrfmzmlI1YJpp80fgt1SY85T5Jm8b5WS+"
					    "pxbmCp9aaVqf1KHIqbYjUj/"
					    "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",
					"text/latex" : ["$\\displaystyle \\left[\\begin{matrix}0 & - c \\rho & 0 & 0 & 1 & 0\\\\- c^{2} & 0 & 0 & 0 & 1 & "
							"0\\\\0 & 0 & 1 & 0 & 0 & 0\\\\0 & 0 & 0 & 1 & 0 & 0\\\\0 & c \\rho & 0 & 0 & 1 & 0\\\\0 & 0 & 0 & 0 & "
							"0 & 1\\end{matrix}\\right]$"],
					"text/plain" : [
						"⎡ 0   -c⋅ρ  0  0  1  0⎤\n", "⎢                     ⎥\n", "⎢  2                  ⎥\n",
						"⎢-c    0    0  0  1  0⎥\n", "⎢                     ⎥\n", "⎢ 0    0    1  0  0  0⎥\n",
						"⎢                     ⎥\n", "⎢ 0    0    0  1  0  0⎥\n", "⎢                     ⎥\n",
						"⎢ 0   c⋅ρ   0  0  1  0⎥\n", "⎢                     ⎥\n", "⎣ 0    0    0  0  0  1⎦"
					]
				},
				"execution_count" : 3,
				"metadata" : {},
				"output_type" : "execute_result"
			} ],
			"source" : [
				"# compute the eigenvector matrix S\n", "c = Symbol('c')\n", "rho = Symbol('rho')\n",
				"lambda_list = [eval for (eval, n, es) in F.left_eigenvects()]\n",
				"Sinv_list = [[ev for ev in es] for (v, n, es) in F.left_eigenvects()]\n",
				"Sinv = Matrix([Sinv_list[1][0],  Sinv_list[0][2], Sinv_list[0][0], Sinv_list[0][1], Sinv_list[2][0], Sinv_list[0][3]])\n",
				"Sinv"
			]
		},
		{
			"cell_type" : "code",
			"execution_count" : 4,
			"metadata" : {},
			"outputs" : [ {
				"data" : {
					"image/png" :
					    "iVBORw0KGgoAAAANSUhEUgAAARQAAACWCAYAAAAff3ceAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAQ3UlEQVR4Ae1dUZLdthF8Su23Ss5W5QDrG+"
					    "zGJ4hyA9k3kHWDuPIl/"
					    "amsG9g5gSu6gZQTrLU3kA+QqrhUPkG63xISieXycckBZgg2qvgIgiRmugccAiAf59HLly8vD4fDByxj6e2rV6++HduhMjEgBvbHAPzBR6C+GEOOfY/"
					    "OejveIM+D++m3/obyYkAM7J6BH0cY+DvKnrG871B+goeRAxlhS0ViQAzcMgAf8XPOBcpYdMeh5MdpuzADMETy9v+DqK+x/"
					    "FjTqXvLJ70RdKAea5Nw3DL4p7VE6vxlDKABct7qGusfsHC4+QOWd8iPjk+XSbn/LG/"
					    "51CyCDvczNH+PcHzhapMOBQZ8iuX7LzC2let0f4L126Q58p+Q5/"
					    "ZPqazU2ls+cUXQwYJf4RiyuEmHAghPumWIZjtbfHJ2M6LuNcroLImvZPKWT2wRdLDgWDh6LG7VofQgbDL7FFr/PqJ5mhTn/"
					    "pLJWz6xRdDBgmPh6LF41stXyeLuy4lITkIysZv/K8rG7tbHAyx/ujs/h0qcAP2A7cGMNbb/"
					    "jfLnWFOvIqnT4VTdfz51wNL93vKpdwQdlvLXP084+mzc5qv1UED+BRa+58KJyDdckL/"
					    "Ckp503GpU9vefndx3uVyU09E8w7qYM+mgJWcxJedJQRq85RNaBB0sKBaOjMVqDgVyeRHzzdvPE5HY/"
					    "q4rx6psgtxLSOAcBRNfxMmHHCyr0lOiAifS+Yn9pXd7yye+CDpY8LwrHLOGPLgYecf8D5aH3Dm/"
					    "xXnHCxRrPrm4wPIay+eE8q8+b4xkuvM4Rs3T8c6A/S/yHdi+QTknyvL0G8qTw6AjG+iCbcrJy/"
					    "I6LLZzR9avM93x0pCwv88q7y2fOCLoYMGncGQsznUo7J5fZec+ZJMX8Htc0KxndrrHYRxQzrfyOITisGlWwrFH2VjTcdAxfp4/"
					    "QRmdHcveYymaqAcWyqC8PKWyNDmb71+97S2fACLosJpI4RilsPiQB42HFwkXDnkiJPZe2Fv51FPm+"
					    "Nowym56ZSWzdFx0YnlKPZTSjs1bPnFH0CHnf8m2cPRYq+FQ0oWb1j3xx7sVeww1Ey/k3HFw/"
					    "uR4EcOpfN85wZI68WnSX0cEsBfIIdsoVyPHLy3ylk+9I+iwlL/+ecLRY6O4Q+lkcXhxZ14DFw6f8EyNQ3uqmmUHwwnowMlaXtzJyXxd+oJG/"
					    "eTjd6yPPSMiQ/4JVhwaPud2yeQtn9gi6GDBsXAMWZw1hzI85eFbIP0FFv7xjQ4kfSKBF9BrlJW+G+cK8z8z/+p04eQnHQx7BtTvH1j/gqVGSjK/"
					    "gTDqwfXfoENybKV18JZPfBF0sOBZODoWH/U+sMQ78+DubcF0iTqgJ+/"
					    "sD5qULaGH6hQDYuDY2+Q7XPz8yaNaQx5r3tmrqd2zscag+"
					    "sRAcwxUGfJYswZPeJxAta5X9YkBMbCOga32UNah1tliQAwUYUAOpQitqlQM7JMBOZR92l2oxUARBuRQitCqSsXAPhmQQ9mn3YVaDBRhQA6lCK2qVAz"
					    "skwE5lH3aXajFQBEG5FCK0KpKxcA+GQj5YhteXEufheR/XKoHwNpLU4jAcwQdLOwtHLcshuuhwDAfoJpbACyLxrWFOiLwHEEHC1sJxxcWQzkUGIZ/"
					    "MnILgPWFlrZzEXiOoIOFlYVjyGIohwLV+M2Usb/"
					    "vX6P8KYzHTx4orWcgAs8RdFjPZDtt1sQe0RwKv9429sGl9FkF7ldaz0AEniPosJ5JBSwbcHg22HLcmNn7SN9cddR0negOp1uwsQg8R9BhnRVvzxaOu"
					    "yxG6qEkZzH1nZMWhjzewcYi8BxBh7tXw8NLhCPjLJJDyVQb3TwfLd1IIe5ol1CV80FMkYONReA5gg63llr3uyscdCiPO77Seh19y88emztJtaU7Ad9"
					    "L2XJi+I4UOZEfpGYAtH7ivELpb9pG4DmCDn3el+aF45a5vyQCw/"
					    "RQcKGloc7YsCaVpcnZpP+m1gkj1nQcxFQ92FjSoZOf81eF5wg65MCXbAvHXdboUP7oitP67lH1SloJmnSKMT6i8ww2FoHnCDqcstOc/"
					    "cJxOPw3ERWmh9Ip1ErQpMTvfesL7LjJdtYMNhaB5wg6ZCZYtCkcPdpCORR0IV0DYPV4KZ0dDN2Am5O11YKNReA5gg4WRhaOIYth3kPpqXWFPINufYO"
					    "1RwCsnirFshGCjUXgOYIOFkYWjo7FTQb6smgBqkMMiAEbBnDz33ygLxsmVIsYEAOmDISaQzFFpsrEgBiozoAcSnXKJVAMtMuAHEq7thUyMVCdATmU6"
					    "pRLoBholwE5lHZtK2RioDoDdCh8yeoFlqk/OlVXTALFgBjYDAP8+wF9yIEO5QIL//Wa/tGLrJIYEANiYDYD/LPr8Z/"
					    "zGvLM5kwHigExcIoBOZRTDGm/"
					    "GBADsxmI+F+"
					    "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"
					    "B76kKd5iQcO+"
					    "YwiOcZzufwiUOm2QnHH2VjTcfBNu4S9Ix6YKHe6TpjPqVUNuvaizbkMQk2lJgIvPbG6S2fpnHTARcPLxIuVYY2BHsisQfjHfTMxB7RHIpJsKETxouw"
					    "2xunt3zawE0H3pG7RpDWgzaB/"
					    "ewx1EwceqWhT5JbO+iZiT1CORQYUoG+"
					    "dhLoK4Ct2dbuzG1ALz5CnppTSBe85XownIAOnKytGvTMyh5nlqwY1XWFehToy4jMiWoi8OymAy6gF3QeXMARHx0zcRj0GmWjPZfjEWV+"
					    "ogQ9W20PBfoq00BU644YgANaNCnbCkXAr0BfrRhTOEIwwB5N7V5NCOC5EhGHPLmO2hYDoRnAHZpPSJTAQKhJWVlEDIiBbTMgh7Jt+"
					    "0l7MRCKATmUUOaQMmJg2wzIoWzbftJeDIRiQA4llDmkjBjYNgNyKNu2n7QXA6EYkEMJZQ4pIwa2zYAcyrbtJ+"
					    "3FQCgGQr7YhheFFOirQjOJwHMEHSyobgXHWi7C9VBgGAX6WmvVGedH4DmCDjOoOnlIKzhOAp1xQCiHAsMo0JcCffH7rvw84ybSXtrsXGOEcihQ2iTY"
					    "0Fzwjsd54/SWT+oj6GDRBFrBYcFFuP/y8EtZYx+3SR+g4f4WkjdOb/m0YQQdLNpSKzgsuDicmdRiUAm6jvy4zamUvn5/"
					    "6riw+"
					    "71xesunYSLoYNFAGsNhEmws0pAnOYup70rMcToWbaVkHd44veWT2wg6WNi4FRxmwcYiOZQ5Bj6fc1ADx3jj9JZPE0bQwaIphcaBXtYlQF53QFcHG4v"
					    "kUMbmTpJB051Agb4SI8vXEXiOoMNyBr+c2QIOhu9IkRMZqyh/"
					    "wsY5ol++"
					    "QJ7OhXEoAJWGOmPDmlSWJmenUQXe643TWz5NE0EHiybSAo6EAWs6Dl5nq4KNhXEonYFNgg1ZNJbCdXjj9JZPeiPoYGHmVnDw8ffqYGPRHIpJsCGLVl"
					    "K4Dm+c3vJJbwQdLMzcCo4LkHGTEfLgYGOhHAq6XQr0pUBfHMc/"
					    "zxp22M2G2uxgOgG4OFn74GBjYd5D6bWYK+"
					    "QV6KtHSKFsBJ4j6GBBbws4TIKNKdCXRXNSHWJgxwygN6NAXzu2v6CLgWIMhJpDKYZSFYsBMVCFATmUKjRLiBjYBwNyKPuws1CKgSoMyKFUoVlCxMA+"
					    "GOg/Nv6I2doc9VuU8Q06JTEgBsTAAf7gI2i4uI8KOhS+0PLingMGL7vcc4yKxYAY2A8D6QPyo4j/D04MQISuHGg1AAAAAElFTkSuQmCC",
					"text/latex" :
					    ["$\\displaystyle \\left[\\begin{matrix}- c + u & 0 & 0 & 0 & 0 & 0\\\\0 & u & 0 & 0 & 0 & 0\\\\0 & 0 & u & 0 & 0 "
					     "& 0\\\\0 & 0 & 0 & u & 0 & 0\\\\0 & 0 & 0 & 0 & c + u & 0\\\\0 & 0 & 0 & 0 & 0 & u\\end{matrix}\\right]$"],
					"text/plain" : [
						"⎡-c + u  0  0  0    0    0⎤\n", "⎢                         ⎥\n", "⎢  0     u  0  0    0    0⎥\n",
						"⎢                         ⎥\n", "⎢  0     0  u  0    0    0⎥\n", "⎢                         ⎥\n",
						"⎢  0     0  0  u    0    0⎥\n", "⎢                         ⎥\n", "⎢  0     0  0  0  c + u  0⎥\n",
						"⎢                         ⎥\n", "⎣  0     0  0  0    0    u⎦"
					]
				},
				"execution_count" : 4,
				"metadata" : {},
				"output_type" : "execute_result"
			} ],
			"source" : [
				"# compute eigenvalue matrix \\lambda\n",
				"lambda_waves = diag(lambda_list[1], lambda_list[0], lambda_list[0], lambda_list[0], lambda_list[2], lambda_list[0])\n",
				"lambda_waves"
			]
		},
		{
			"cell_type" : "code",
			"execution_count" : 5,
			"metadata" : {},
			"outputs" : [ {
				"data" : {
					"image/png" :
					    "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"
					    "w5f0j6VWdtzdJhzwCMFA5YZ8Oyn/"
					    "0nEio4xJKFL94jgHJv4Efvt+MLS38f5wYAEAz35qfQYw0n2AeGcr8AxhkjBgFkGevJTFy0Gs54QwIKBThmIwNCpYUOtYKCEAfGuBJpbrpZqKyF3/"
					    "FuPegMzB9L4bL/4bWHrfFnHR98rwSjaYgBQ3h92s1Qbya2RPOkNrHz2hI/Gc4LPt9g48CuarPNlHR+NVYpRLDAAqKul2mpdCd70Bl6+p/"
					    "IRNk46+64WD3Prsc6XdXzkuQZGscAAvJzVmJ6KJP6UXuDgGspwRmSPaa16n2pL63xZx0feizFKBoZrAH414S3pLcks7zGtVe9TbWmdL+"
					    "v4yHsxRpHAMLM1cP9UT7L6u7Xqfao9rPNlHR95r4VRJDAAb7roj81c7LErsVa9T40N1vmyjo+"
					    "8V8HIwMCmPAeappr5yBZLD8Qk2RK0Vr1PtYJ1vqzjI++HMPJZpO2TzgwMF9h4aypFGhxWT8eCTpL7srpU/"
					    "QrXqvepzFvnyzo+8l6CkWMTjAXblai4b5rQ70ldiKnuQspLg5BNsUhWvla9T+XYOl/W8ZH3WhilxhiI+dRls/"
					    "hbz2mtep9qM+t8WcdH3osxSgYGTq3dvrx1z2Ou8P12FOn2it1/XavepxrOOl/W8ZH3YoxigQEXvqul2k716v3fOdc7DVKlcaB99ap/"
					    "t86XdXw0SA2M59Ute7xCtg48LdV2XJv5pa70hmPxH4eJg1FMfHaCY0A/DE63zWz4YZ0v6/"
					    "homiKMZzc3N5eohA83PRyMz0ojBQPBwMoYwPXP55meYX8m1pVYGcehbjDgmoEIDK7NF+"
					    "CDgTYMRGBow2vUGgy4ZiACg2vzBfhgoA0DDAzvDVWnfRtJUWswEAxYZ8DlgjPWSQ18wYB3BnwtOOOd7cAfDHhjIMYYvFks8AYDAgxEYBAgOUQEA94Y"
					    "iMDgzWKBNxgQYED6WYkNplvGgjOYfg7b8pkRs++gsGAnYOB0fT63Ib7gTe7as8BPS4yiLQaQGQvOPH36NQz6BBsfSLrIGVejXNNOkK2+4E2Oc01+"
					    "cthSeSlGscAAoLHgzGA1cME3Wj3Htn2NVjKmhb22ncgNNrUFb3I20OYnh4/lNTCKBQbgLV4EYw4pBs/"
					    "xprc3vNIm98BPMUbJwMBn+6deVJn62enZf2lDt5bnTW9veFvbb79+D/wUYxQJDGjapBe+7pM8/"
					    "i72lqCx0JbH3vT2hrel7abq9sBPLYwigQEkp4uefetDaU7wOPRbq/ne9PaGV9ruHvipgpGBgU35WHBG2sV+k/"
					    "fgt0MXR97wSpPqgZ9DGPl26VhwRsBjpsZUktgU2S0ttOMNb+JSau+BnxKMHJuIBWdaexP6e6nrNNVNSnlp8LU1nGz93vBmFap8ggd+"
					    "amGUGmOgiYoXwahsZ6nqvOntDa+UHZMcD/"
					    "wUY5QMDMWLYCTLONt709sbXml38MBPMUaxwIAmTiw4M7gwuGA34lNsj6W9OifPmJ3SIFkaj8nBb15ujJ9JfWtgPJ+suV3mFaqOBWc2mw/"
					    "Bw0cw4G07qotqVrUTeOE/HhMHw5ikF7x5K/Xwpyo/"
					    "h2HdKSnCGAvO3OEyvgQD62UAATkWnFmv+UPzYCDPgNgYQx5KnBEMBANWGIjAYMUSgSMYMMRABAZDxggowYAVBhgY3hvApL0VbIEjGAgGZBmIBWdk+"
					    "Q5pwYALBnYLzkjPY9jglkia3PM5jnmvNVIw4I6B3v1YNDCAzEt4QJq0kh4icucUAXjdDKzBj6UDA2f63YLYT9btWqG9Zwbgv937cdyV8OyhgT0YaMS"
					    "AaIuhkQ4uqsW/jKuFdrTxast34VQZkCUcRoshQ26NYhjI1UI72ni15dewuXYdpRxGYGhsQRjI1UI72ni15Td2B5Hqa3AYgaG9qYoX/"
					    "2gP8Y4Ebbza8u+Q4fRLMYcRGNpbnrdnX02ISe96TLdvJ05RydLGqy1fhfTKQos5PK8M6Gh1aOJc4AS+nprAL/"
					    "CdA3IvsedCr90l6DVnroaltxOp4vXCF3Ca9eNaHEoHBv5LcqXntaR00b8+ovCci/"
					    "HIz6sWaePVlj+LTFx8lv24CofRlZjlCk1PetC09vqVa+PVll+fUfkasxyKtRgQZd/"
					    "k9Mc5Z7lznJVPjS0kFVJkjwVnEiPTYzGp1ARfDvy4is9JBobeLvrksAf3cKLX2Fg+1V1IeWkQ8mA9UgXaeLXlz+EZGE37cS0OoysxxxvKzile/KNM/"
					    "OJfa+PVlr+YMIM/KOZQrMVA8hDN+C/5xUAkR3aZHjPKvT3s8pOvQk/"
					    "ToccKXuELHyizprs2Xm35YxtNHjvw42IOpVsMXFPiybBxEgb7Q5wu3G2Crq4W2tHGqy1/piOa9uMaHIq2GED6ZwDNxUPY1GHiPynzLrHdbnP6/"
					    "GDrwNNCO9p4teXnvNCDHxdxKB0YOLnppxzrvZUj6LG7QN1dJG282vJnGMm8H5dyKBoYAJbN6nEiwb8gv+"
					    "fWwljfOO6AgTX4sfQYw84tQO4lvvBNTmzyRAoGXDLQqx+rBAaQyTsSHF+"
					    "4wrG1UXmXDhqg5Rno2Y9FuxI03UAm70x8PPrOfDMTfeRdLCR6Y6B3PxYNDAOZz+"
					    "AEDAzsSjBxnGFND1ZtlY4PvwyswY9FAwNcgXMW7g37nWeAaDcj9jvQcbBmBrr3Y9HAgADw/pq9KXTvg4E1+LHK4GMf7hFaBAP9MhCBoV/"
					    "bhmbBwMkMRGA4mbr4YTDQLwOiYwykEf2z9KQhX1DyEBufIej+VqU3vbXxasunrx5L1vEl7MDJu3982nLRnCHRFgNAcjT3Bfa8XckXwPI25Q84vsC+"
					    "2+"
					    "RNb2282vJzjugA3z1g5MOKnBrwLbbF15dYYABIVwuv5Jxjbrk3vbXxasvP2dU6PuIHRr457BE2TgP4LqfTVLlYYIDw4kUwphRwkOdNb2282vJzLmUd"
					    "Xw7/rHLJwHANRFMvqkzjCyzvMXnTWxuvtvycD1rHl8M/q1wkMKBJw9mOuZTeApw7z025N7218WrLzzmWdXw5/EvKRQIDAKWL/"
					    "tiTlHOCxxLdLJzrTW9tvNrycz5jHV8O/+xyqcAwB9CDOSd1eI43vbXxasvPuaB1fDn823KpwDA1tpAApijMeQ29JW96a+PVlp/"
					    "zP+v4cvhnl4sEBvTNUhdiqruQ8tIg5Gzw1k/0prc2Xm35OX+yji+Hf0m5SGAYABUvgrFEMUPnetNbG6+2/"
					    "JzrWMeXwz+rXDIwcFrmBxOorpBnceGVCagnZXnTWxuvtvycka3jy+GfVS4WGNAMc7Xwyiz2ZpzkTW9tvNrycya1jm8CfxoMTWN5E6e8m3X+"
					    "blbTHLYOPC28UosMb3pr49WWn7O7dXwbBDC2bJg4IYuJz05wHI/"
					    "PJu0v47A9YfxxdnNzc4kMPtz0cPjhuDyOg4FgYCUM4Prn80zPsD8T60qshNtQMxjogoEIDF2YMZQIBuoyEIGhLp9RWzDQBQPjwcef0bfYV+"
					    "o58viYaaRgIBjoiAFc1z9DnYtDKjEwcKTy0LoO3c1GPERE5AcDK2MgvWJxUu3/AySyMXnbmOhyAAAAAElFTkSuQmCC",
					"text/latex" :
					    ["$\\displaystyle \\left[\\begin{matrix}\\frac{1}{2 c^{2}} & - \\frac{1}{c^{2}} & 0 & 0 & \\frac{1}{2 c^{2}} & "
					     "0\\\\- \\frac{1}{2 c \\rho} & 0 & 0 & 0 & \\frac{1}{2 c \\rho} & 0\\\\0 & 0 & 1 & 0 & 0 & 0\\\\0 & 0 & 0 & 1 & 0 "
					     "& 0\\\\\\frac{1}{2} & 0 & 0 & 0 & \\frac{1}{2} & 0\\\\0 & 0 & 0 & 0 & 0 & 1\\end{matrix}\\right]$"],
					"text/plain" : [
						"⎡ 1     -1          1      ⎤\n", "⎢────   ───  0  0  ────   0⎥\n", "⎢   2     2           2    ⎥\n",
						"⎢2⋅c     c         2⋅c     ⎥\n", "⎢                          ⎥\n", "⎢ -1                 1     ⎥\n",
						"⎢─────   0   0  0  ─────  0⎥\n", "⎢2⋅c⋅ρ             2⋅c⋅ρ   ⎥\n", "⎢                          ⎥\n",
						"⎢  0     0   1  0    0    0⎥\n", "⎢                          ⎥\n", "⎢  0     0   0  1    0    0⎥\n",
						"⎢                          ⎥\n", "⎢ 1/2    0   0  0   1/2   0⎥\n", "⎢                          ⎥\n",
						"⎣  0     0   0  0    0    1⎦"
					]
				},
				"execution_count" : 5,
				"metadata" : {},
				"output_type" : "execute_result"
			} ],
			"source" : [ "# compute S\n", "S = Sinv.inv()\n", "S" ]
		},
		{
			"cell_type" : "code",
			"execution_count" : 6,
			"metadata" : {},
			"outputs" : [ {
				"data" : {
					"image/png" :
					    "iVBORw0KGgoAAAANSUhEUgAAAOQAAACWCAYAAADOvSRHAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dXdLdNNLHD6lcU0yo4p7MDjJhBQ"
					    "M7GMgKCDvIVK7gLjWzA8gKwrADhhXwsQNm7qfqDU+xgbz/n45ayD6yLduyj58n3VU+kvXRav3VrS/"
					    "bOu98+eWXj06n08+6SvTdV1999WkpwsMcAUdgPgKyp1+V62Epp+LeuZdF/FP+L3rX11l8x6vMRaadRAe/"
					    "aVGHFjwODpOLNxOBCZ34h9j17ew7K+K+eeR+LUb/ye4HvUr3TJGkrUo/yOj6EQ9Vl7/"
					    "pojOaTXcIh9l19wyjCAzqlXTmm35OhRH0N35yg+R+kpSZjO/"
					    "LXaTEkwXsmEB1+LeuR7qe6roAakwUpW+KA3KovJe6mHl8q3t6UacJBKZwUzyDxye6Po6s/i33Jvrfk/tA10+6/"
					    "q60Fh6jlznis1iv3snWkH8Wo9ERT/FU4Ae5f1km6jFzqT6sof8qt6pBtsRBvN9Ilk/"
					    "lpmnMMVE7llRTuMX4X+Re6K7CvldtHuv6UP4qHaipvXhV6ZXSPRU/ZqidNWRNGcx/"
					    "B9eVNQwOmoY6Ubda2gQHNUjei9fK8tanm8JN8cw+oFdn5+KX9mewwTBa0ly9OuWbOjWCfKbKzZra1TC9dppYJ+"
					    "pGo9TQVjgwtfqP5GjWS9dU5g6kmcJtqqOzDcr3W2KxQK/"
					    "qDVLMWTONTmlbVuYKvKjbZ1PlbowDisMax2keAlO4YbAntd0vA2xDvOKGRtCBbFXBVXplnO6bp8JF6EllUaWZzv1f5EdP/"
					    "9MIEDFZG0fl2LTjz+L4s+47o7nu/"
					    "6Xwz+"
					    "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"
					    "A8uIQS6l/"
					    "DldSbkBqlbhaYy+QQe5YkP9oJuScoY0hZ90GJPyMzphIB1ZFF49Kmb8UWqmJ7lBEU1dc2NH1m+"
					    "JENGDYyiBlDf5Y1DouBTeNxLy5TxPShPqIrd0WFMw/"
					    "Miz5JB39oHJJUZRDjOEPElQSsX360gaOqzOaJ9nlL8W21628AzyNMG7n8fuW2BS1FsrYK6LQf4eM5lbxUMAhJ5BLg2DAiYlVRgGQFg+"
					    "hdPtIMErNGY/RSyHU+OWEp3F7FPVBwoLvPI4yUc9qW+aMiksGJdcU1ozzjyr+UnTNzz4cb2yRNG9KJ9wlWN424ylly3cMnWrbY9S/"
					    "hSm8koGhxyUwWyg1GGk/AOei7qJzwW2hbzg1+/MCsmKQS0wMb1dY5j/M+num2eFS6/X3yGlojTQUqBWiPNH1tigNGoylj9i5/"
					    "lGeKFI1LWk7CVsUsGRZ8eYYyQKz5oz4RfTDtXFDCQZdkz/XHyYOpOPDaaOgSvNM4VBTKcZoWi34Fdcf/"
					    "qsqG1opG5j2J6U71GUqIT9hbCxnNaYgC10c3bW/d5blz3kRqGS4kR+TMMCSALhaQQiRhUdGt8qVkywJFDlGkjmdtgo3kawTvjETV9R01pZ/"
					    "NjEAg+ji9HPIqI7pHBsiNmmD/gx6lgdzM1ZkZ63VYJsct/"
					    "TPTvGrDXhQ1ugvElxFY4xsq5mNKOXJy3+"
					    "x7pM0eXdleZgi2DWfpMdruq2FSZgB60ZIc8c9NvCIDsgquI0Jo1qRjp0UngSQh6mWuTZglDIi7WL5GREqAZR6TEEFDoZnMIYUajvT7ogdmzNKEjHNa"
					    "YsqeMic0Yoj41m+c4pdSFPIpUHf96fzTdzqNuaA5PTSJsK2tAj2Wdhm4nCqH9S/"
					    "tTRZHF971aY0MbMZqjDamoxZUUROImbCvNMDoWsOSlcyRJhvGyWcDWpmHEWv/CoIcpnO58o/"
					    "IsFZWHY1JXRZerUcRqKqfyYsiAHu7Z9AlMem3ysKxma/HldwNqml/"
					    "0yGHnzToiRpJNGvMIIrHCI+DDtVbh1pCFix59qbCUjmzHgG0Zy3dMp8XhpbO26FSboegdb3S+m1QYpEDCgvPFNmFKYxXVc8bBNF0bJZpWzQsQ/"
					    "KbWFLXHn1JU6qQx71FEsTmk6o50lUvigYilutC6Kx8i58pkL5aCwhJ/k0maB5Eep6eHTyG7+mGQXJ8pU0pmLMKW1NXOVbEq/"
					    "JSboLB1EE7rXhEsbJt+KTVFB27B/"
					    "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"
					    "1GWtuuaMVlu/"
					    "ik23Q5AMyMturhmpH5gMShuRT1k3AjayZfq35IBkNmQwaJ5Zfhh5WFjnT1wVBzENbnVGqx+YHCC9zo8b5Ia4x1EyNxQrrRQW4pQnPPy3hNEdS8+"
					    "IypVPdZlihjNayR/lwIufEa9zRqvCUt6YtlReKSzw9J92CPiUtR2WV+EUDYjRNFA0OKa1TJdtA8nPaD3Dc/"
					    "hfHyEP30RVAjJ6+RmtVVAdO5Eb5LHbp0o6jYqMhmnXtZRJafKp8GjaUn4P2wcBn7Lug7OX4ghUIeAGWQWTJ3IE9kHADXIfnL0UR6AKAQySLW/"
					    "WF6+rcngiR8ARaI0Aa/qwxscgH+rioTNvhDg5Ao7A/gjwmAobXH6mjnbtMORbTS3q0ILHrQbRhb9AYI1OMELOJhX4TJl44+O2Ew/MqcsiukM4LKq/"
					    "ZxpEYLFezX4OKSXkBen35XIUxa0m1YEXsh/p4guG/BvEyXopfVMckEOFvtTFzMMPT55sgXOCKdwUT4fLq4RMCyHWa/"
					    "ZmE68cslTjZX9erLBw3S4n8VmsV+98+eWXKAKf7vAWf3qnsSSO4qnAD3L/Uoq/rWGqD/X/q9yqBtkSB/F+I1k+lZt/"
					    "gXFbod1N7incYvwvci90V2F8PcMXLR/"
					    "KX6UDNRUTryq9UjoON+PTuXfmTln5zCcsPmsEWppGgn0chVzKYm4+6kTdamkTHKh3FOBOvkmzVbtO4aZ4W169Gmhg2p/"
					    "BBsNoSXP1avamzmeq3Kyp3cLaAQ7XLhTrRN1qy9wKB6ZW/a/"
					    "1d8Fgp0K2atcp3KY6OpYJ0Ptnp83vAr2qN0gxZ800OqVtU42rcaFu4euIMQk2xgHFuZOj4ximDeKmcMNgT2o7+8i6X2SIV+DQCNpPP+e+Sq+"
					    "M4X3zVLgIPaksqjTTOT6shW50cTraEBAhUasflUMPzLRjyUG/1I06Ts0AmuAgWemVwYoGAy/"
					    "KZ2r1QleglfUxNqtdyYHC80UJ7YncbIBcpXOuwU3y9WnQYMUPzImnTlvoaa1eBZnnGCSL3sH1YwSKxTEVCxsScklPQ1oPJO+mxEG/"
					    "lM9ozo5lMi6FYaicYTP0oS2HQ9EwU7QaB8lAOZzXysnjQbHlgh2Ud3pr6nPmtvJXctFpcJRleJNELrKzWfGnlaxnZ49l1+"
					    "CWeCuPrR8N3xCncDoW6oSubLmJVqtXQa45BsnoM/"
					    "Z6HRX+ThXNdweZAqYeP5S40U8Efs1Bv9TN1hJjUq7CQXKSH6XqjzIYJruAjEKnBvWBDXwwKLb+Mf5ZI4DSo6x0Ysw4jHhEgIGy8ZZ3Hha/"
					    "iauyqnArFG6d7EfiARZGGAqnKnBkSZFi+kXYZQxr9SpkmWOQD5QjKEtWWPBKcEZClLljfAof7UVjPgMsZ0tZJ8WHXjmPkB+"
					    "lLY1ybIaYwpU6AsrpyNfji0HQ6FO0FgcbcdLoHQtEvrwzW1sfqwdt8yzDxsJrXGYZfYW1TmsQK5VFma3a1eSsxc3SmxtmZwM6Y2mG3DXYGc9avQrp7"
					    "1uulS4GwMPQosEO8Vb6ksGdFE7PzNsO1S8fKG0oWy6KgLIkhVcYSkTYWI8+aGjKV0s1OIQ0OUPJh2zImKZVDepjRYDlWL0tXcfNcPy2E/"
					    "GHoVnn14se7EhP4jm7XTPmVbhl6c2LPgzKaokG3EXY9XjN0qs5BsnQi+J0SCATxpWUqZNg/xtGz/"
					    "6jA4BFIcYahjpQxylajMMIVigb8pUMZ1Z9YhnPxa7FgclpCp2B8kR+8A1r3yx8M2+sU0nHxnA7Kd+jKFQJ1wt5YzktsMt51+"
					    "pVyHMvzznhpwFsupKSqhI38cbcFIdH8fRQexIy9g0v7YxKnqe6AKlP9GQ1StYCh345yBdklmylw5Or6hPrxYZLiwOTaTfWi4nEHwXnKi0ZUroNPXNw"
					    "QwzTvcnBojF2OQS1ehXyzDFIlOKjvKTMz/TwopFUSeb9r7N0e3g7jRaV6LEKNqUeOuiXV6oszZici3GQLHRa9NapY1MYozdKbsr/"
					    "icLyOuT+k+JIO1Qf8F59YLLKoMNCRpQpUAxjM4r/"
					    "qazBKeZc76i8JbhRMKP5SflrRsgm2FFej2r1KmSbM2V9pRw0yAWpwjQSf39GpZgqQTTqC4UB5p7EJgSHEyMLz/"
					    "dQaEBBvmdyqUeJ6E2La9pe4rU40HFVH56stHPqwxQu7xipU0cZhUFaWysu1VnhuZERDrETDGYQO608HsjThYidfqpxk4xsxtCh0HmddM8IyY7q2J5E"
					    "K+woMqeEcR445L8/"
					    "FNEPV2VYT5x08XXERaMoDMW5OkkOOoBcKU2mUliIU54wYsntKK9lzF2lWYXDXPlq0ysdHSBXPqIyFUYRCT9FXnjxo6xDByaHKbTSwGtMiWG1C0XZS2"
					    "14Eaa0NR1rklvpW2KX863WK8t0zzyVLqPOrMpW8u0nu1EA115EZ0LdamkvHGrlOUWFTZjpHoOjd6aTofcnTe2ByZaPbC1p73atkr0xdnmZc/"
					    "XqNOvzK0qS8Az/TFHznjgX4lb5VQ96MTZBGBWq6Yg4SCYMiRGDjZ3XuqgbL0yn/wNRGqZzLCuY5VBnpvXQN4pjxHxP/t90bfn2CuUdilpgl1dI/"
					    "Kr1SmnT51f3cyaVfhqcteQsBa7kfY1kKOiSUf9wOKhhGQ1Hp91Kk9e1lJYNI6gUd465g7+NsMuRWaRXc6esJwnOtIMR0hb7uRC3yh/"
					    "rsGi0v0s49BqN3V52etP0txfvtxMIrNGr2VPWCVk82hFwBGYiIANOU9bZI+TMsjy5I+AIzEDADXIGWJ7UEdgaATfIrRF2/"
					    "o7ADATcIGeA5Ukdga0RcIPcGmHn7wjMQGDJc8gZ7D3pGALaXeNtmpe6Huryw5HHwHpL4twgr9jQMkjeluFoDQ5HnvxE6IqietE7IeBT1p2AHipGxsj"
					    "rbtBb9WbMucr+20fADbKPyP73vILYP+Fgfym8xEMg4AZ5/"
					    "WZghPTR8frtcAgJfA25YzNoesrmDZ9u8aUMX1lgiGzsvNB1QUpPWvsagw+E+WC4+Tum4skXHksPmL6Q2wOWI+Aj5HLsZuWU0jMS8lkURsXFh7/"
					    "2DebFCKl4NnlekS6m5QsbSy9vU+JAZuShzE4ZCrcDppt3BE1rcEeY+Qi5Q0NKqRmBMCgMMf+OFP/"
					    "FyW5Kw0j6sdz8ZAY+di0eoaLwQEqPMfEVTvWhyMrDCP1jYHD+pI7vKHNijZvLkce5vzECbpCNAR1gh6Fw2nd+ng1JGTXzw5EJS6T0jFgYIQdX1Xx/"
					    "yjd4cw9FbnUgc5LbPcsR8Cnrcuzm5OQIjc60VAbGqMlIePH8UXGMnEwhMdjwhb/"
					    "COlNJhZeIE+w65ZQS5WHiG6aicikLmVKnoTDkI2wWT6V3WoiAj5ALgavNJqVGobn6hmfn3BSVXfmYojLFxVDwM/"
					    "J1TvGLvJ8rbu2hyGIRjv7oP37BwE8qx6esALED+Qi5A3SoUk8AAAGcSURBVMixiHztSFBam0nh0+HI8nNcpR2leZK/"
					    "OF1VOEbOJlGLQ5GRh9Gwb3jIGDoMlfc0lklap40QcIPcCFhjKyW+kR+lRuEDKYyRh82U0uHINk09J9ZvTB8OoUqB593Q1YciZ/"
					    "w6HYbKRD7O1zEjHTpgOmPh3rUI+JR1LYJ1+TkQq/"
					    "Zw5M+"
					    "Vlh1WHjcwCkKcBpcfTkUYU174GmHInemv8qT1oOKIDzwUbkZmeXGZFiMja1WefWKgNQdMK5lTKwTcIFshOcJHSs4omRuPpb4Ii8ZSMhjLc1IaDJUrH"
					    "9WYXi45FDnwnSNjyOA/myDgU9ZNYN2WaTQejDyQ7ple2ghpm0W1hyJHLu4cAQEfIY/QCstkYHRlF5aNndf4dT3RxaHIGCvTXL6xfCZ/"
					    "2OGNft2GtLhOB0PADfJgDVIrjoyL9WJnzdjPqzT5unM0bT+v318HAZ+"
					    "yXgd3L9URKCLgBlmExQMdgesgkE9ZWXv0pfhOYRc7gf1Efu8IOAJ1CMieeOnj4VBqDJKt83ytkafNt9XzcPc7Ao7AMgRG30n+"
					    "f8YkUUIP0BVjAAAAAElFTkSuQmCC",
					"text/latex" : ["$\\displaystyle \\left[\\begin{matrix}\\left(c - u\\right) \\left(c du_{dx} \\rho - "
							"dP_{dx}\\right)\\\\u \\left(- c^{2} drho_{dx} + dP_{dx}\\right)\\\\dv_{dx} u\\\\dw_{dx} u\\\\\\left(c "
							"+ u\\right) \\left(c du_{dx} \\rho + dP_{dx}\\right)\\\\ds_{dx} u\\end{matrix}\\right]$"],
					"text/plain" : [
						"⎡(c - u)⋅(c⋅du_dx⋅ρ - dP_dx)⎤\n", "⎢                           ⎥\n", "⎢   ⎛   2                ⎞  ⎥\n",
						"⎢ u⋅⎝- c ⋅drho_dx + dP_dx⎠  ⎥\n", "⎢                           ⎥\n", "⎢          dv_dx⋅u          ⎥\n",
						"⎢                           ⎥\n", "⎢          dw_dx⋅u          ⎥\n", "⎢                           ⎥\n",
						"⎢(c + u)⋅(c⋅du_dx⋅ρ + dP_dx)⎥\n", "⎢                           ⎥\n", "⎣          ds_dx⋅u          ⎦"
					]
				},
				"execution_count" : 6,
				"metadata" : {},
				"output_type" : "execute_result"
			} ],
			"source" : [
				"# compute the \\mathcal{L} matrix\n", "\n", "#drho_dx = Symbol(r'\\frac{d\\rho}{dx}')\n",
				"#du_dx = Symbol(r'\\frac{du}{dx}')\n", "#dv_dx = Symbol(r'\\frac{dv}{dx}')\n", "#dw_dx = Symbol(r'\\frac{dw}{dx}')\n",
				"#dp_dx = Symbol(r'\\frac{dP}{dx}')\n", "#ds_dx = Symbol(r'\\frac{ds}{dx}')\n", "\n", "drho_dx = Symbol('drho_dx')\n",
				"du_dx = Symbol('du_dx')\n", "dv_dx = Symbol('dv_dx')\n", "dw_dx = Symbol('dw_dx')\n", "dp_dx = Symbol('dP_dx')\n",
				"ds_dx = Symbol('ds_dx')\n", "\n", "dQ_dx_def = Matrix([drho_dx, du_dx, dv_dx, dw_dx, dp_dx, ds_dx])\n",
				"L = simplify(lambda_waves * Sinv * dQ_dx_def)\n", "L"
			]
		},
		{"cell_type" : "markdown", "metadata" : {}, "source" : ["### x1 lower inflow (with relaxation term)"]}, {
			"cell_type" : "code",
			"execution_count" : 7,
			"metadata" : {},
			"outputs" : [ {
				"data" : {
					"image/png" :
					    "iVBORw0KGgoAAAANSUhEUgAAAOQAAAC1CAYAAABPhVPfAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dXbIcNdKG2yd8TRgTwf2YHQBeAW"
					    "d2APYKYHbgCV+"
					    "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"
					    "X+jyvyu6+P8v1+XcE/"
					    "f6dvUvtTKB9H1p65r64fuX+j6yeLtUHnvdHXGXWnf6vq1Xf6S4+rvJrzLeQRvdY3Klcp8pUtV3x3muKxoMLPIFCtyp+37+cUK0bepUB0fNPtj7bjM+"
					    "tEXLC+WgeeG5CVQHOuRrKXiyY1WOrP6qJuXkO38JvJmK97l3JgrV/MUUoSzLuHPl/"
					    "ng5QTs7j72hT6lxyRjnaiRD6LpVnRzBVAchTPFekai0ujnn6HA3foqV16EhzIIJuNrhyxIvmhQnzfhXc4k4YSHs+SK+"
					    "g9zJBPv8eVZSzL7XgKw3lhi9WvkAzSx7mNj5y33up7r+"
					    "t2ETiE7zKwLw9ox3iuaDgCwuQPcGwt5192wKbmWdxFVCBbJVf4HZXYf8xkzR964Vzm0nyNVQ4vkRp0aI1EY2XGc1O92Hy6FD3m/"
					    "1Ccs5KcK75tC5mxYdS/"
					    "eMeFNliuV51Ecu90PFinkKmq9snPAOdDgQK6QV40cjzgHnANn5YAr5FnZ7407B5occIVs8uNiYnKDWOOz1q8CRIsdMKiCnlqJWLLLWmtfjkKXBIlHB"
					    "+xWEvJohC1yNj44VsYh6/"
					    "C4QPfVgGhik6BzAFzp7L5y2mbRJlbewbm4VP5futi4WLKjnTd90fduIUeGVwLEbiOPCBBwjgiyNU7II4Zrhe2jbiMYj5stepgsOA/"
					    "b2CWN6R8r3EIZaWMJrn+r/"
					    "TkHMI7LrAqxu0JOG5SnKtYQ8FiNZ3323G4apuOXQuBLkwQW3s6qrqViEa44STCJodAOBQ48LKR5UpcDCOCXebKEijSU8bNWOgrBofZbXRxZw1XDheS"
					    "AOy4jFoq1HX934iQHlnYyqDzC/FIXbTBRcIA/VzQEPrmFuqct4p/r4qgc9L1u1VHSOGyEi4kN3uVvRxhv/"
					    "J6UcIUcGegohCgByoNicY8y8Va7xitKFOefLriz/"
					    "OOCo2u85d2O5HG6CdeXNVxIU8i7YME7x43klSfhnxmqF9pQPNABLt0zESSIuHGzUQKUd7EibISLI3mc8lpMR+rcBd64Qo4PKoLM+"
					    "jGcSlKIQqJcbcHHTaScubYoGdaTzZ8fdKHMKGouiODC7T0onXaIm/VkvWW4KEIZdirfKDSLSBvh4LjSoIe6AZ/"
					    "CNqC8DXztAjPiRVyigfbDGnsAl9E5UOT+ZrlCjo89s3kSZARfF8qHUuY7rM8UT+5nVBBTnIPi4KFOAMURanAhoAAKaJYOxeQQ+"
					    "AMyMsD1TO6o7sP6NcNBPcOXqikfZc/bCnlKh4YpmyxY/WDF+3DFxmjH/"
					    "g8bkzpB34TRKXgfE1whx0cdIWusHxVn7dYWfJRhyPVEeXIFBm9SdN2zxjQouZ7gJ/"
					    "2NFVLIBJBb3GAxs3y7TRZNChXwKOQ1IUwYTBRzoA8X1pvJAi+AZ6A5XTl++jDEp7zsvbu/"
					    "unc9ntFhCRXCgwDnigMG0sNMrzJsohBHuAkTKD1YH8OjkDIGKEL4xwUJysuFlHrJ2pIvQIEpdxtD2mpMFsrr0EBZAWte1m4AG0J5WyFxxk8Rl9o2lx"
					    "5r2qeMNAPdY1Z0BjmXVfThZXVnu95IqJjxzXq8VJwNkaAMSr/RZa/"
					    "hOCgdq4ACsX4ypUSRKQeQ1v5nDMqUu5+UAxfuMHhy5SULWvgHAXRBB4rBu1aNJkUDsI5tbxSBE0VhHcsOa7vOXc1pv0Vcwkl/"
					    "p+ClH51+T2v68ku5QvaMsQQMBWorUSitPJQldzEPSsPqFAVNeVjYZGUVt/"
					    "Vjw1IpHcuIMrLe412qefu4vEwKQ9ZHRcKaEDqSe6w60FukjQpzYAAXE8wbcKnMV7psdzmhVxpKS36j36mA38x7Y4DzazMOJOE1jBJSnlFi/"
					    "XgUwkdb2wqU1m5WpxSqLor/"
					    "SKFZ6lKxY6QFi652w25yTwNMOO1+"
					    "9RS9n8luIc8z7ribaccVEiTIDYubkxWVC7d4iksILtxT3mKXu9k5ys3v1Vavh0BjykdR2Ul26zjAfVfIAeYcK0tCOctKRCG29ewkslQH1ze4iJMqHL"
					    "9Q6eXUx291Zy2gkO9Fmi3cWRe2J1eCjMt4EaC+VNOPEi1Kaz9rrYbeExLyobXlFtI4kYUuJBkz/PakHLhSa3/"
					    "FFi08KQHemHPAOXD4w3jgFtI4sYNQlvtaZLL+5J8bPP74RWn5oxElOeyZA66QOxo9KR87rTz+"
					    "uFbYPsmzo544qX0cwGV12BcH2G1Nhwz2RbpTO8YBV8gxDtWXj9uazsDWR55TtIYDrpBruHfiutFdpVW3kCfm/"
					    "amac4U8Fae3aQfryDlXP+2yDT+rw+IKWd2QDBJUXD9KQTm7irI67JwDvsu6rwFE6UrH7viP4w1dkWKyC8s/Qzgvay/"
					    "b4m9apXoq4lATB9xC1jQaA7RERaNEY/"
					    "2odJ5J8v9HO3jOl6v469NrXbyflXvL061DzRxwC1nz6ETapFT8Let5jPJPDm45OI4lxCKmg+dRAZUU3iYQdmOVlv4bSYZDvRxAIe1vM2/"
					    "rJfN+UyaF4jTOpBM5Kmt/bEZJgyIqrfiH4fvN1ap6j9cTlhS4rE908VqGx7oc9s+BpyiguoF1fB7vwz/"
					    "599+1i+0BewPo4MFd1h2MsZSKdSJviRt93KEyJz9SpzbNKu+Am3WT6Js6dY/"
					    "PQcKOtav62aNoDF+2qpyVuyDPFbLiYZKgs3HT+ZJVpSTzeg7emeOwggOukCuYd4KqCHhYW5ygrVVNSBnZmOBfKEwiDgs54GvIhYyzatEq2AN4Tsxs+"
					    "bUrBLzxQF9xNgB41MHmTVgvKgyWSeHixxsb4Q1KKdrGXlVp7POwxQG3kC2GzIlKiHkD908KeSTBTiYvVDYLwVvlsG4o6Xe6UBYU7InCUYjlbvOCSgM"
					    "3H0qlPV7Xb23xVvJJeHN8dr8hXuhIz0QNv4fTOeAWcjqvGiUlxCjbmq9d2RE38PIKSD73Hd5tSoIABWs/"
					    "G+bRFMrNrittB4VVyBvNnyptKUzCqzagibfZNax21ij0LJ4YMjz39tYVcvnQP1PV9IhBQoowJoVSHEuR3r2qOArIbmlQIt3jZiLcPM5Awb7Xlb+"
					    "b9ZHiVla3h4PKhcceCp8rmtxCxcGd/"
					    "iMZ41M2WDj1g2JPwqs2cJeHvsvRnkBU3GEOB1wh53CrWRaFGXouyLG2fE2HMOfnUPlwKwqKRUHB2ps34KaNEoArTQa6xxVOJ3l0z8SwxHXsxSucHN/"
					    "DMg593Yq+"
					    "DPFE2Q5DHLgayvS8QQ4g9AhgAgmtba6QztoxWUzFUZDcipkyogRYlsZpmli3gV9lDCjPdVA5yuTtkLwUevGqnaDwCrGqyTq3GoKWIQvaKu7RNgceKu"
					    "G9mGhhu4zHyxzAQuFymtJgzW5iUdKSxYppKF5ae1FPF9aENWEQZIXv68rd1NKXrEAHHo7FYYUPCjsftiF9AfTiVRv0L6ethJ5JJ/"
					    "WxVMDTihxovCj5r1jEwmINT2xyQAKKMhWFT3m4psk9VdzWj8Gdi8KNJbG3diPsJcDi0kbu+h7a+EsVl6SN4GVCCVZc5TqH1ZUW+qDQXdb5zP/"
					    "DqlzZjYdH5UASZlqR0GJpcP0QbNZmL3VxIqdhgRRHqXF9zQorejYIbrFo6fu6lU0eZyPwEhrGZXU4PgdKX7ua5GZKAVDck37JqsQO0TDkEfiXrUpMW"
					    "5DmCrmAaXOroFRz6+TlVZ+1ap9bmxc9171/"
					    "2WojzrtCLmCklOMsX8dSuwuoPU2VPtqUbuvk0xCy81ZcIRcMoAvZAqZ5lUkc8E2dSWzyQs6B03DALeRp+"
					    "LxJK7LM10LEepSjdjyc969fiQmXBK6QOxpNKaR//"
					    "WpH47WEVHdZl3DtvHU4DZMOHZyXFG99aw64Qm7N0ePjw21NZ2KP35y3cEoOuEKektsr25LLyhE8wC3kHR8u7heFtBMYnPR3qJsDWEf+"
					    "JeLnResep7nUMcGGwyMo5BNd/BfvsS6HujlQXD9KQTnvirI67JMDjF34P+zDfdJ/"
					    "b6lm4ErH8DicfgNXpJi4tfwty79+BUN2Br6G3MmARUWD2sb6Uek8k/SvX+1kHMfIdAs5xqEK8qV0/EWL13wA/"
					    "PuDkMPmWEIsIq5sAOXZv0iwpmE3VmmN/1PGoh5UyAFXyAoHpU2SFIq3D7TfQNAuFuIqa9/"
					    "ZQEmDIiqt84fiYmVPPDsHXCHPPgSbE9D++hVWtPG+"
					    "ns1bdISbccAVcjNWbodIFo114aSvXbVbVd38bXTt7JPEMyt9kvYuqRHf1KlsNHEvRdKunzWqD/"
					    "41rIVy5Qq5kHHHqCZBZqNmL1+7GmOBfw1rjEOFfFfIAlPOmMSLosID4jPSsEnTmlx4PHMdJ5lNcN4HJL6GnDnKEjCU5mRfu4I8tXmtgMcb+"
					    "RevsKa8/IrHINz/"
					    "T9cnul90rO5IbQSlFF19L1ZWlkPOASykvSDZwjzf7zMOSGhP+rUrmlabKFvpi1fPlP4klrlViCKGOGlz4Iht+"
					    "Newpg1EelEyCvlXrGPhNBT3rJSEFldy6GtXWDD+QJxbA5Spc2hfZfiEHXk5oEydskp7rKvzxSul8Zwx/"
					    "xvWa8UXWUfVW9SG+sAJoSEXm4li0SShevcJ0ouS3WWdPuxYpPRIQYKIsP1m1RVHQYa+"
					    "dhWKqhy7qCUhRUHB2QCVD0qmkJM6ubLjxjaUISvL5IBrPQa4u71fv1Ll3jYiYvKHvuVRmmDGaLrX+a6Q04cfhRmyQDyAz4+"
					    "oIaylc6ek5eUUDQBu2ugDlCwooJSIcvzDI8eflFnpTBTpOF0fwkL6nDY4zsdBd/"
					    "8aVoGRS5NwWR2mcQAhb1g2CX6wQgpJR0GSxVS84VIqD2Hvfb4Y6zbwq3wOKJxZHJQ/ger2vd4/lZl4M7kNtRmO8inEyuaWO2+K/"
					    "gxZ0Lys34sDbiGni8Hir11JYLFonyq0g999rfZ97YryWFU+"
					    "mc5GCYqDIjAhIPDJ7dT9GpjcRuwTdAwBk1Lp72JDde51nivkxOGXAOJSFoVLebiOyX1UvG0NHysfC4qbB2A5UC4+"
					    "Y567wSgYbXRcWpVrtKEym8PMNnDJ30CE6nUOryuNSYi8vH8kOQxw4Gogz7OWcyAJKygQSl24eIMWUmVQOhR3yHUFZQ0Q3HPR2ucu2+"
					    "RSA627ocEt5HGGqvO1K5qR8OLioZhh/UVaG1QmuKIKb2L5dpEq4qJtyGNASTk659Zx5mi5Qs5k2JTiEsSiazulLmVUv/"
					    "avXY11xb+GNcahnnxXyB7G5MlSEP/"
					    "aVc6QCffiWaeU0vxLWB2uNBNcIZv8KMZckIps8cQjcMA3dY7AVEfpHFjKASykLc7tofNSXF7vyByQpb5WE6xPeaMAD+P961diwgUAu+"
					    "th3wELyRY7R7J4VuZQMQekkAxcOBig+y909e7WVtwNJ63LASbacCzSXdYuc2pP4fQLiulwgRxwhdzfoDKb5n+"
					    "72l8PnOJeDrhC9rKmvgy5qBzJA9xC3vHh4n5dIfc1pFjH3n+M7KsrTm2JA66QJa7Um1ZcP8pycv4VZXXYOQce7pz++0Y+Slc6lvdS6TcwI7q1/F/"
					    "Sv34FQ3YGbiF3MmBR0aC2sX5UOs8k/etXOxnHMTLdQo5xqIJ8KR3/o3weSeHfINzyf0MsIRs9uLIBlGd/8cKa+tevIl/"
					    "2ErhC7mCkpGSDf9nKu4DyxvIoafijs+KdPxDndfy+Hg64QtYzFltR4l+/"
					    "2oqTZ8CDQr4X27XwDGRcRpOyRKzlzvqnXLWfXlW5hKs19GEJ3Tuv86HRj0L+FSMWWl6VoQTmWoSxfnqiK/"
					    "wzX2mNjY5zEC4aWOehjGdVyLG+T+Afk8rnuvyc7Bgzt8v/w1DtcZeVV0P8GAWGNdLZj5EhwKLjA+gyxlYcDvJPfQiTm0Jew+FwYg7sUSE/"
					    "yXiEleQ9NWcDCS7WmjfIdd4Udzaihhse5Z/6gnVkN5e+OZyQA7tTSAlJ7hLyZrNVa6YNeA0N4a8zG+A6OooZ/"
					    "KNP9K0XhAvXlkmxehCd9grOqmnd7S6rGIzA8DKo8DrCM3L5mWgonZ45KB0L80wX1ia3TKvIFS6ePXI6B1cZHhTXe0qHR7iePJvkHbCJVzGvl3/"
					    "K5wM/f+qiTMcLURp4t3pBs1AdF0Rv+KqzwuJYHbf16dh3ZyHpmpjKzB2ESfdnm/"
					    "nUNgqRW2zIC6A8lAahRSk3df2EG8Vi7cya9amuDqgMm1+PdfHtDSaEXBmn8o++MaE0QLjozx6/9Mz6edDqNzp6hsjuFFIM/"
					    "VV8QgmZvXkb3DlnvOJhb8ZRtP2mC8tVVFjKrAQs7mtdKH4D1K5NAoSNTS/lzeEfGzzpFFDWCEKN9d0VqO/"
					    "05zryp0raq3ZZxTgGvv214kHXT3WwSpRB8FAG1jg8HmE7f9Z6Mw4criE0YIlulJYsjeIcXTunYEIL/WsDbjQuJ5/"
					    "Ha2w2KW2Qfy1EfDcES9sGhLozESqNskwQ6UvPVFQ6lmkW76mXw4a4g1IKd5U74tVaSA0AwsCHTbEyb3ShGIOgsuYaIogoCn9LQjARSoQoCC/"
					    "lSvcF5D8r7bXKQsONLuI50N7bPOEU95H2XxUG62t9oW3doxS4qcFyKswnkLnk0beGwgsf8ds2IqXDi86XniMdJaVuo+iNb4ybdxKVrH5v+"
					    "6fMuDplY1Pb0gCgTGwYhGdi3Ov6bEJ91kw/"
					    "6EIYh75mzLrod+HH5UV5O0qlPNziNwpNoKEBRTalVzSs0TrCScaRIShdbAP6TPmgDRqhNS8Ti84OQp9btVDIDr+UBu9LX3qGDibUNTALt/"
					    "qPN9TnuTBejUlmDWFb1324NcKN8KEwycURc2GiKUZvE1EQDwqZAVG0AIojsLcKk/"
					    "Lofuwt2rhkuVuGe3rIcRBfCsIDTVM2GNiQQTFy+ERp9q8OhB13GhcsuKqxIDxorB9j+pwARUg8ixUfFdIORqPC58rPlQHaGnSozKy+"
					    "z8EdaWQSwMMqQWkyKZU7SxoK+"
					    "V5s2cKzENJqlEFvC2GryGAU5cnXTgyQWdtQUYNMG5TrbN3HPGbRfGZngkDoc2BwwTMb1MZvqrSF64TgsePZ7iPxnAezaVQF+"
					    "kYfcyhZzTyfdnOFJM7aG3eWPh9iuKTvU3Dj2TCR9n3ZmXFdI1uqvjl8aBivdPNXjFhoeecMGbiGW6FBnGJNGGzq4baFwY+"
					    "daFsLhIw1JUrKw202gnJg4A9Kv40hOEn7kngGDGyDzizvKLeiifby2Z9+MrGYqwrdWCDCnAckzYXHqtAQ3ohzrM+hjsrCM5SaeOCpwrUwiFttst4/"
					    "KMSzaE+gZLX5R9q54Q8j4KHdVBZijXjOaAPPoLKpMgWoEwYlK4ww5O4ns2dQNqXj+"
					    "v0ZQwUBUGDOyzLbUo5dWtxEq6NoAAQel6wDkXbapG3WNGHHWGGbtk7dvgTVtdkf95vHKkwoWHHWukH4Yhnop8w3utZYSXZkS0qNV0GfGsqqsgCTFmP"
					    "HpEE+dDHhlfAoeRaM4la7yEp7nPJG4E0uC3ne2e+"
					    "rVMg40IuYproIaXJPFcdaIJy58PxPae9n3G8PIBYHN6s0w2bVwnPAtFbNM2J7a5QhRxfuhRNlbii00qAdIQtQKmN5C8L2RGYomFwYn07/1D48y/"
					    "mW31v9ReFE3ND8hgZU/"
					    "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"
					    "mZDkMIMDVzPKetF1HEgCnaHBwmIROQuKu/"
					    "qFwlw5D4qj1CitWeGs+klvgwUWHWHnuNCyTRyFLE+aygG3kFM5tb5c6cOxvRY2b05KwLoNxb3R1VDYvNwx79VuL63KQ0mr/"
					    "xjqMfmzFW5XyK04OYJHQlt0bUeqpWzVt0cjKa2iG56DnmWiqIgHm5DiCrmQjRLAs3yDQe0upPi41Up0Kc0/"
					    "nDST7a6QMxlmxV3YjBMebskB39TZkpuOyzmwkgNuIVcy8JTVZZWv1R5rUU7l8HDev34lJlwSuELuaDSlkBxb43kmf8lKZ2h31AUndYQD7rKOMKjCbE"
					    "7DpAMHFdLnJK3ggCvkCuadqSpuazgPe6b2vdkjcsAV8ojM3Rp1dFdB6xZya+"
					    "ZWgs8VspKBmEgG1pEzsH5edCLD9lbMFXJfI1ZcP0pBOeuKsjrsnAP5LuvvGtR2d/hLkO/mtblyvjhKVzqC91LpN5Cl8WIXlv9K+tevYEhloPHh/"
					    "6JP+shCIXsPDce8vrqefkIOREWjxcb6Uek8k+x8/SqW50A673TlnxgOdXBgcCwevHt3liOZdbBmJ1RIoezrV1g/+9Mz/z/"
					    "EEpLWeZFyrHNQaOVVzKF6DqCQfl0OD169evWC8VT4k66P4/1XPsb7GGO3kNVPmfMIlEXkLXc8p8SCfqCLNcsbpa99xYfQOBybA/8P/"
					    "Hi0PadhkikAAAAASUVORK5CYII=",
					"text/latex" : ["$\\displaystyle \\left[\\begin{matrix}\\left(c - u\\right) \\left(c du_{dx} \\rho - "
							"dP_{dx}\\right)\\\\\\frac{R c \\eta_{2} \\rho \\left(t - t_{t}\\right)}{L_{x}}\\\\\\frac{c \\eta_{3} "
							"\\left(v - v_{t}\\right)}{L_{x}}\\\\\\frac{c \\eta_{4} \\left(w - "
							"w_{t}\\right)}{L_{x}}\\\\\\frac{c^{2} \\eta_{5} \\rho \\left(1 - M^{2}\\right) \\left(u - "
							"u_{t}\\right)}{L_{x}}\\\\\\frac{c \\eta_{6} \\left(s - s_{t}\\right)}{L_{x}}\\end{matrix}\\right]$"],
					"text/plain" : [
						"⎡(c - u)⋅(c⋅du_dx⋅ρ - dP_dx)⎤\n", "⎢                           ⎥\n", "⎢     R⋅c⋅η₂⋅ρ⋅(t - tₜ)     ⎥\n",
						"⎢     ─────────────────     ⎥\n", "⎢             Lₓ            ⎥\n", "⎢                           ⎥\n",
						"⎢       c⋅η₃⋅(v - vₜ)       ⎥\n", "⎢       ─────────────       ⎥\n", "⎢             Lₓ            ⎥\n",
						"⎢                           ⎥\n", "⎢       c⋅η₄⋅(w - wₜ)       ⎥\n", "⎢       ─────────────       ⎥\n",
						"⎢             Lₓ            ⎥\n", "⎢                           ⎥\n", "⎢  2      ⎛     2⎞          ⎥\n",
						"⎢ c ⋅η₅⋅ρ⋅⎝1 - M ⎠⋅(u - uₜ) ⎥\n", "⎢ ───────────────────────── ⎥\n", "⎢             Lₓ            ⎥\n",
						"⎢                           ⎥\n", "⎢       c⋅η₆⋅(s - sₜ)       ⎥\n", "⎢       ─────────────       ⎥\n",
						"⎣             Lₓ            ⎦"
					]
				},
				"execution_count" : 7,
				"metadata" : {},
				"output_type" : "execute_result"
			} ],
			"source" : [
				"eta_2 = Symbol('eta_2')\n",
				"eta_3 = Symbol('eta_3')\n",
				"eta_4 = Symbol('eta_4')\n",
				"eta_5 = Symbol('eta_5')\n",
				"eta_6 = Symbol('eta_6')\n",
				"Lx = Symbol('L_x')\n",
				"M = Symbol('M')\n",
				"u_t = Symbol('u_t')\n",
				"v = Symbol('v')\n",
				"v_t = Symbol('v_t')\n",
				"w = Symbol('w')\n",
				"w_t = Symbol('w_t')\n",
				"s = Symbol('s')\n",
				"s_t = Symbol('s_t')\n",
				"t = Symbol('t') # gas temperature\n",
				"t_t = Symbol('t_t')\n",
				"R = Symbol('R') # gas constant (kB/mu)\n",
				"L_inflow_x1_lower = Matrix([L[0],\n",
				"                            eta_2*(c/Lx)*(rho*R)*(t-t_t),\n",
				"                            eta_3*(c/Lx)*(v-v_t),\n",
				"                            eta_4*(c/Lx)*(w-w_t),\n",
				"                            eta_5*(rho*c**2 * (1 - M**2) / Lx)*(u - u_t),\n",
				"                            eta_6*(c/Lx)*(s-s_t)])\n",
				"L_inflow_x1_lower"
			]
		},
		{
			"cell_type" : "code",
			"execution_count" : 8,
			"metadata" : {},
			"outputs" : [ {
				"data" : {
					"image/png" :
					    "iVBORw0KGgoAAAANSUhEUgAAAioAAADNCAYAAACW7lugAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dXa7cNtauy8a+"
					    "bjhuoAeQAGcAiT2C7J5BEgPn3v5m4MBX6TsjPYO47w/gJDNIegR2MoAD5PvuG4jb6AEcn/"
					    "fhJhVKoiRKpdol1X4XoKLEn8XFl39Liyzq3ocPHw4mI2AEjIARMAJ7RuBvf/vbx7r+22XYMwJl2a/K3vY1AkbACBiBu4KAJvhrlfWBro91faLrB/"
					    "n9LHcXJFmfS1CUlNUUlTNhgrL1ha6/7wL4WxLySoB8qrx+GcjvR4V/ORBmbyNgBIyAEbgMBFBMPqIoclFY/q3rHs9bJ8n7hWT8s9y1J/"
					    "dbx0Rl+FnXp7qe6Xq1dezXkk9l/U28UJJ7pLB79zNfKvm/Otd3WfhmbiU4GmexULclpPJHg5+kLcg6KaQjVCNQW+/"
					    "VDO9AxC30gZp624KceXOokTmPf+T9Z1l6xtb32fNmb4URStULuV+fQMizYKKyhLk4lm2wWAo/+zw4KFwnQLJOzZffKklX//"
					    "gxscmXfr4TsyqzmeJhJoQpmizM3shvbW1WbPukfJ7J979rZe1zWMeH8uoCM3AoksJuXVblSYXTKD7T/"
					    "a9FwS7Ac6ic8qdtMmjh8kbCgMtg9lAX9LXiVLXzm+jtX6WdrPd2ivEn8QsDbYyVlO+n8kfuhvQ8Vi76wykG6ib/"
					    "pTeS69b7QElWyTFab2NyKgyL85dyF7ebJNMcXoo7KnPiuYbbKRtjyF4s6chafKFWmVgteKGLeYp+X5yj5E962injBWN6GDfl5vW9GibiS5//Std/"
					    "6T5XhuTVEDKRZ3F+UbpN9KtG2okbyTvalhXesx7JD67U3SG3qPBcRWLA2uUbXe91TwcuNoAqZjMiKR8q+K8x/xkp/4iqtMVG/"
					    "UeMWXeYBmlMPVpD1h7TOo9QPuW/GyVlYZ0UyyletM0fdDF5MxAwQOEy8DLw/"
					    "KTrWBqs9wWMv40yIicyvtPVW4pVGOVC9lK5rhW+ZrtWNseTZNpFfx2TM4Zhis8nrUXgLOS1ZlublFsy0o5oi3vZn/KVZO1NchRU/oyB9Bleph/"
					    "r6pHi8ALASwxLLowTvXFTfqthIl4oTygZ9A2uIikeZaJsvTjR76h5sJjp6T0Xt+VFikosz1/l3nZjHtSeZ2Cc3lpnJClHVYOh/EwSvcYk/"
					    "zVkLWc87osGetv1Mi7RdOiSOhkr51Db/F2iLMmrVYKJem/FrXh4Jn4MloloN2yoY0DrEoNtqW5Rbh51I2/"
					    "geY0+cHR9JRxG6m1MTuqmN3klnjPd2bxGZJ6Z9XR05QUOKCm/6poy1U8zPHEMycgYMKVAYrF4ravXn5Q+KQu4xRcYxVkVE/"
					    "EDW17sp+RWlBAHy0uXxtprN+5mnlXusflyVM6r0dDxQDpd0Sw1nqwdKuHhQyN6rHveKAPpHu2reY7eKAXFPOVP5TERvdf1QM+"
					    "LrDxKN0cexArgy23W0/"
					    "AUDcp6Ezzvd6h88qeTvdDFZiTun+iiYwZaUJ6UdLGbyUR9MLm+lN9Rg33Gs1jOjrDU4dOOH4+"
					    "0nW49FaJVeQ3Ve1XiLBIyvc2ex2575Yr1i5LyeTehwnp9Qn68zTF4Y7VhsEQR4F8eKEfd/"
					    "ibvYVL81PaG6nmwD5RkG85pOER81uivPTnFF1yoGyZDLMdg+Vru7Ha8Aq+12pqKcDjEsrTGSvnRHhiHn+"
					    "teTmgbzRgqv1tpN8pnTn0OvZAgf07UWUnhDdYY5YkFtrd0Kv9RTPIMTnRPvVPGrsWo117JfyZ2JKmmFXkvasv3qyXNIkropJ2S6WISHwY6zKp0CDYG"
					    "8XyQC38abEPyo6G9bzyyG4Uxef0kFz4M+kzcs0npq+XJmLMERmNqaEzWJtKMm6HyRXnpTKyr0pipD7AL9RLDq/BVmhYpLUsS8F5C/"
					    "1QiBnXq46UunhdTLMdgOXPGiks7oR6btomfLgYjzLu9yVh+S8raq/"
					    "dcjtp75f1KV96umRxZ3mlNiHpO5aIsz3QxoWCS5vkjXd34vT6hOOACgQVpUejJP+zpkUsec2iwniOvvFwNX4X1ZGsCZ9yID+WZ275b9TYkp/zTvh/"
					    "KgKIdLA0zxGuirsCrJXPDeMGNZCliL3/2tN3LLpTXQPKrajfE0xXaUH6f+GRusd3EfObUJwo65SlSlOUXucF6EZ9DXN0zv4R/2OCh51b/"
					    "iX6DmBB+C0TZWn0ylqHXr+S/pC9UFWFl3ova8lWVpP1IVDJvGTXmq37qP3we6paBMpjw5KYKgH/3LZMKe/"
					    "dH0ps7pWHAZVBJExMy9d4uu+kGnufIk1ggc6sxxeeerCnBHHeifLzl0dla9aDn1OmWlCeJhymUxj+"
					    "LlDcm47eZDMjGAMaV6ncWT0WeKmfOL7RNeTCZJ39k6G1QTYFyl5S1VO8Zy/"
					    "m3khclk75Q2mBHuWjn4S1XLnWDwtHDVGFDfYL28L0u3o5pN7l1CX6hzcqfvHimXTNhYd1M/UuPYWCfque99NeinKGQNz/"
					    "USavsWdjc2yIvYYsMKEIoqSWijolzFIn/ULuY4lvVbsSEZQpemuAHZqWXgsF2o/"
					    "jkUzsfKGpoo2PjLO041R1jIvjTh2jbjEfcI0+"
					    "Ko9tNEWXr1vtQe52L3ZyCzuItTMfa86K2fDVH2ixu0eQWG8AjuVUVr3hhgpXLcgWdKBHLBd01QxoXhewSnaPpEOJFHBrlQffw7FY08nV5MxDTQebIQ"
					    "xZQqaMUZRV/"
					    "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"
					    "6vJc61myDbZnhc1qy4r/"
					    "TJdE+7DsZNpJ7ecmAuei8CaCNeVJvG+"
					    "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"
					    "jFwrZ37rZVUZgtInlz08JiNwDgT+"
					    "lzJFNwmKyjkEcJ4bQoABVtdZzdXKnzfRSdqCrJNC3uEItfW4AkT5sf603XMvIWHdeaHyn2LfzVnKqrJgTWHTM2UbJcU5+xgyKmAWKFmrxposiW/"
					    "PjID/9XPmCpiTvToY5m7+7cCbG29tb+R3lGlW6Xlj4gCu1UzV4jebKIcuTmId/"
					    "DeHwo6SVen5GyqDFEfIdw8hmy3zVhMMlVP+tB8mUlzOUWFyZxLCqgpx4NtR7UDpJ+vxJqvjfjtyUq/n/"
					    "ncTMuSfD2gVUPJyEB+fNqDvgnOx38ofHrRz6of+8KuuvE5WK6v4Uvdf6UIZyZUheTWEPOR5sn7Z5HRLNyrrrbTRWyrOnciGpR/"
					    "TThBQB8Mcy+fo+"
					    "WLul3S4Y0RXegYqjlVfvLavtIOD8wLZMHEzKPZoDVnFNMgqXherpETgiuVUuannH3ShmDI5MWHiMskzGa61fDJYj8pjVZLslJVyLG7DKwn0lWRAuSi"
					    "Swmhz4MsLxuNSJMVBgURp/Fn31Eurnep5tbKKF4oTChFjAFeRFI8yUbZinOh/1BhSzPj0nrfWRk9flMvPwYrK/"
					    "uqYE0bXGpRH3wIroVltyUiDHuW6HhgU15CVt9m1sKuE5yzRxso51H74YOEqdTlRj6sBonxoEygpWB3OZs5X3uCdWz2GyojV4rUulIQWiUdSGHB7CqP"
					    "CVy2r+IEZLzo1chMHy0uJ1uiXJb4n9VPZx8aak+Zt5vMRuJqfxCnOjABvXYNm2JmyoRQUecmfASh9bZdTRBdZb5QOeRmYOSG1Mc/"
					    "rnjea5jmTOwwgeu5uSJwtq/gz6L/QxbdnuH+ii4kikMLnypaSLnYzmcCWN+uX8mu9Oc9lnvEslrPDjzI/7fjxSDvoYl6IVu01VI/VDFJEla/"
					    "XFuXHd5BoV3wigKhMpk0blR/WAhQD4hGGEsa/g/g3S6ndKahMip/a0VCdDSl/"
					    "JYbUdUkhDBYZ5YXFq7XPRX6jZS1lsrIfdUkZSxajXr+UvCfrVyvzXq2Nroy32XUQuN959uOGEVAnTW9idLCjSLwYLN+"
					    "XmCiMCe8nuQz8b3Ux2c8mpWeA5+u/8GGzHc8HuZSDwaxELG0xKDak+LNljXkxwLPOzwALZuQbsIvhc2VT8iA/"
					    "J6rCewn9U4leKz2YvNTF82KK5RgsZ85YccGROmjaD366mBxZbuhN4PJbWtZePeay1N4r/2JblD/"
					    "7jO5lF0pIIPmFdqYHysVyCYr2K11hf45ccDjIbY7xz+8J69BUnT1SfOQcpJjnL3KDBSM+h/"
					    "i6py+Af+jfcluKq54HyzqY4boBlC1glrOVXL1+Kb8lfT5nO3h/"
					    "At6rtNFBgR2wGgL3V+NkRreBAAMa+1PCYHdkhgwy77o8xJuBnT0MaTIjr8+78SqfHyoeE0Qwjct9H9NRDhSgEhGnOygukZW3cAb/"
					    "FlZ6TpPAEtmSvJjmh+RPcXqu8mZ54m0mA7IxWaaJtZemwmOqnDmL0H7k8QxZojxMjk91X7SsKWxRWZWuVI/"
					    "yrifJtLQtUrff66JstIHcUgTWqd2znPGbwj/IRalJ/"
					    "rq9IYXV1FnOMyXtukEZiZ60QWQ7iD9paQO0hTwOwVshcOn2SWQr9Uuwn9vn4VVDs3gLU5Rw2tAQHd1Ghxjbf10ErtZlZ24nRqBoYo6D3SO5SbmoEYM"
					    "Bko7aJQbv5s1aPInDwHrQPZ2+O2CRb3dNnWUdBqugJMhlySUfMFjy6KaRV6DeZCHf2bIqTascem5NAgtlCwLqh3oYkj/"
					    "FKbkoA7lCwJv4QbKEepDL5IXiMUVstEwK2Gg5O4xC+1FarDm1tLSsrXpco2zi0bTFMeETNnKRHQUkUJQBRT/"
					    "gjafu792EDv6O1llMxQTa8BzghFUkLZ2g5NIHUKDCkk9Mswhr8V3SbmKWVU5QqAsxH8ivVW7JUt3n58o9h3eUlT4/"
					    "ZulqtdFC+ey1EQSsqGykIirFoOPlE11K9kI3L3mInZ8JEFP477oYSBgku+nGBp80CSrpH1TgQX4sETHAjhFy54oKz+"
					    "zNYOklKEFZYhShbv6zZBVPBlCunE+YBGLYQW4aYKtkU3z2PEDwxULUlEdhTBSjmCsO6ShbbolBIWze9hUHLKawVJQbijxry0kiytra/"
					    "3DDqf0rvsWyyn+ynBmnVj3OLVvk0y1bxr7qljrJy0v5W8p8xJB4vb/ox7DROquSoh+JyZN/ynTlqaqfLruF2HbZjD0PKWJD/RJelKXpI/"
					    "G51eePkLuGN5Ywxjwsaiw7N/1MfolabTR52t0eAve3J5IlKiGgjsYkAXUHWiZNTJzvQ6gmTN3z5vZaF4Mh9yksRgkKDZMiHbVLPX/xqHnL7/"
					    "LpPgelQbwYZNIExH2XkKn1FqQ0PZliop4/"
					    "suqivE2Z9Qx25AV2WCC6NCqb0jNxfyIXKxHWiIdycyWoBvNQVqULcsmlnPg91bWIIq+"
					    "qcsb8HiijVvvpZqx4Y2WtKWdi2avHFDDDLdZvTfpUXrnwSBSU1fQg952ua8UBEyazpKClKLV1Bh+wLVKUJW/"
					    "TyIRylJZ8DooT+rfcXN4ivzN4UjbK2KIoK/"
					    "U8RKP9aihRpf8ob8kWrIZysT6WlBSyWaONVorraMcgcKXEf4oMknsMP6c9AQLqaLwdsHwC0fFwGTwY7BjgmrdwhSXzMoNsWJ6QX/"
					    "5WKe+GeItEycknXd7y+ctnGoDIJ1hrmlTzb5iM4clgTV4MHEwKpUGZsnStP/IKb7xzZE3lYKMpgywYgCF7Et7LTVQjG/"
					    "LA76C04P2W+0Tyq8GccnHkO3VJ/li8sHTlsshrNk2WM+ZJ/"
					    "hDthzfboXwHy6o0NeW8yeWmTZbqMYXXuKlsS9oiabpLXPSJXCbethMOlO3fulIZdRv6VU2d0aaTjKRrSPzTmz1LTvwlGKWI9sNepTCBxjjUD3FQtIf"
					    "6a8P32BvlgbxgASb0K15GfpfbxUze4WyXfIzAL1FpDCGspl8lHnPdSd4qxwMxTXU7xB/M8/YwFM/"
					    "+50HgLynbK938Jz4kN4XZ3QgCcfAoDSA9CRWXTZLEpROGAU/"
					    "Pz3TlA3BKx+BER20GRsVjQFq184onA3IYlOVC+f2Nj34Vj8EFtzQozpJVPJgQRq0HMa8a2ZALZQcKCqD48wYeyiG3BnOUShSEYtkD5wU/"
					    "4jdZTsWhPVS1H8UbLGtlOQ+KN1aP1aUUn8VtUWlbuOgZBRNFIG9b/yO/jzKB3mf33NbWGQr3407a8Kj8etjLj3zon4FKcVLYqdyIQ9PvJ/"
					    "Lhb96llwqS9folnuJf06+IOpsqedNP38Jc8Xvjn/xWaaOzhXeCOQj8K0W+n27sXgwCnFeCtQJrypN4Hzpst4QKYzDH/Fx8G+zGH3jOB/"
					    "6BKNXeadDrJVhJ1h7fSg8GdL7j8kWMjzXkYZa2BnMmyknFKeN5rtuxstaUE7kH6/FchVK+zcSVycC/ndKSD/"
					    "u8uv9uq62z10pL3EuloJyXCnfmflkSKfkFxUryMRaW+"
					    "t0W22iS3W4HgXvffPMNHQzzOGvwa046naz8uFUEVO902kHjDCEAACAASURBVLHlgJOLHgeU/G/"
					    "RxTy3IGtRsBFPyYwiyHkuzVv0SPRdB9XW420XUnKxsZNzTEqWxZ44ijerzhSfZc0v5Q5ZHnp57MEj4sCGeZTzQVL42ceQQeE6AZIV5WVyrOkk8+"
					    "MtIxDriXHz3tUt5+"
					    "3sNoiAGgL7R4Ip9IzifS8Zuqb3njgbkbUn15iHZOYF4OKVlIhBVT2O4XWKMNXBrOXMBXWW3tBn5XOKsq7MEwsbZRulnfXLTbbRUYDveKAtKne8Abj4"
					    "RsAIrIOAJmuWW9msfBGWaZVjllVpHRTNxQjcIKD2h+UrWFTuGxQjYASMgBFYBQH+"
					    "pZSfHbIK0zMyoSyXZiE6I5zOeikCVlSWIud0RsAIGIEMAb0BsnSJRYW/"
					    "JO+"
					    "aYhkuxjq068qw8AfvUdl4I9CAwXdITEbACOwIAfXbyX0dOygOZ7rsQMx1RFRZpz6nsE5G5jIbASsqsyG73QTuPLeLt3MzAkbACBiBbSHgpZ9t1YelM"
					    "QIXiYAUbs4rYXPm2Uj5735J5mzgOWMjcEYEbFE5I/jO2gjUIqBJlr+PcygZlCZ8Dixr/"
					    "aVbz9cKZwMkh9NxOugb+dWeSqvo65PyT+dWnPXfMOCgi38ReIPo+"
					    "tVsjkbgZAjYonIyaM3YCKyKQPgGjCZZzrzh3yXvdHFQY4sUximcb3RxXDwHkJ1bSUHB4uOYpdNBW7IPPSjtmv+k+UH8LmH/"
					    "yBBc9jcCF4cAigpvObxhMPCZjIAR2CYCfK8Ea0kiJls+"
					    "Jlc6up3D5RYrBimDlVzkPFbRSBako0USXuByLRcFymQEjMB2EaCvBusnSz8MAgwkeLbMyHo2GQEjsA0E6LDFbzYVxEvLP4Wg+V6a1FE2ftfF+"
					    "MC3oRorTZzwWZIinA/z8SmG/Bh5lILiUov8B/"
					    "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"
					    "VRdKxz90obAkeqCbFDf5HRQ3HJwm94k8GyVIz/"
					    "BP3xDivmZTK4fCoexM8owCsKQz9WHBknIVk9sxAkZgLwhYUdlLTVlOIzCMAIpEmOAHomAtyfeLMMkn6wtJvpSCgOKC9QGlo7tpFt7kMUTwaxQl3bOs"
					    "xHLQQS4K05LllzGenJOCJQUrEUtOjZIkv5wozxgueVzfGwEjsFEE7m9ULotlBIxAPQIoA0zKDWnyThta8WdvSmNh0TOKQ7B4kEBhSUlBOcAKwR6Xhm"
					    "LaFv8m8OaGNFzwIl6eF95LaJCn8khKEFaYISWFPJFlyuqyRDanMQJG4BYRuLrFvJyVETACp0EAawZLN0mZwPrxMmaFX5jY4zMOCkmzt4N0urA8sN8k"
					    "TO5yP9KVL/ewLJPiwSMneD1ReNjnIrf1FeY84oz7QZ7iT/"
					    "ly2YbYopA15RyKZH8jYAS2jYAVlW3Xj6UzApMIaOJGyShOyApjiadZ5tFz2p8SlkTipI/V4V7MCCWgRFhoyCNfQgrxunmUEs/"
					    "1m+CJohWsPor3TFdPMZJfKIdcL/3MBd/xjcDGELi/MXksjhEwAqdFoJnkyUYTOZYJllCY8Nn78UIXJ9C2LBZ6RtlhCSlZbfR4NgpLS5Il/"
					    "JtpQIqkWA0E29sIGIG9IIBFJb2NhTXmvQhuOY2AEViEAIe9Nf8AgoMm/"
					    "J5FosRZ8VBovtX1UldLkSnFP5Wf8k5jVjELhaPAcIS+"
					    "rSlFhOxpBHaBAC9HwVKMRYU3JHb5P9RlMgJG4IIR0OSNslGlmJRgUNre0k8p3pn9vpeczXLXmWVx9kbACCxDAOtv+AciFhWTETACO0VAE/"
					    "KHc4iufM+RbXWeJfnkl/"
					    "bhVPNxRCNgBM6PgBWV89eBJTACixHw5LsYOic0AkZgJwh4M+"
					    "1OKspiGgEjYASMgBG4iwjYonIXa91lNgIzEJDV5lrR2dTG8focsPZGft2zWeRtMgJGwAisj4AVlfUxNUcjcFEISCnhqHrOX7mWmx+"
					    "Vf1HldGGMgBHYJgJe+tlmvVgqI7A1BDjl1f+k2VqtWB4jcAcQsKJyByrZRTQCKyDA8k/zfaAl/"
					    "GSNwSLzXFf3HJfW8xLeTmMEjMDlImBF5XLr1iUzAqsgIMWCZR9osUVFPDjS/"
					    "lO57G3hi8c8H+SGJSXuTUbACBiBEgJWVEqo2M8IGIEcAawpfGH5mJNeOVCSjx6yIZcPHKaTbeHd+lqznk1GwAgYgQYBKyoNFL4xAkZgAIHi/"
					    "hQpG3z7B0VjkhQvKSdPFDmcNhkTPZZ71JLSZOaOYASMwK4RuJL0f4olSO6uC2ThjYARWB0BlJHS15n5gOFLcpMiwhLOI118S+h3XVhMPpN/"
					    "Nx28ckWFZ74dxLJQ+Nignk1GwAgYgb8kCLCo/"
					    "Cc+JDeF2TUCRuCOIxAVEFBo7U+RP0s4H8tNSziPdM83hF7r4uvL3Kcw3bYoLCEpDkrKA108c28yAkbACCQE/"
					    "pVurtKNXSNgBIxAjoAUied6ZqkG4mOGuCgWWE6woLAkFCgqJtyjcISlHPmVPmD4VOFfK+"
					    "w3uSgoHCDH145tTREIJiNgBPoIWFHpY2IfI2AEhICUCf6hU3UCreLyt2PiorwEBUXPz3S1vtSsZxQTrkT5ffKzawSMgBFoELCi0kDhGyNgBI5A4DGK"
					    "idJjTXmie6wub4/g56RGwAgYgYCAFRU3BCNgBAYRkMLBXpRf5Y7+NVnhmzxaX3IlS89gGR1gBIzAthHw35O3XT+WzgicDQFN8lhIjj0/"
					    "5Wzyk7HK8Hdd+b+MziqPMzcCRmA+AlZU5mPmFEbg4hHQ5M6mWf690/q3z04L/"
					    "oPK8e1OZbfYRuDOI2BF5c43AQNgBIoIMLFfhCUiKlvXUfkqFtaeRsAIbBcB71HZbt1YMiMwikC0EqTD1TgllmUOlms+0/"
					    "WLLvaVfKyLQ9g482TOPhIm9u5hbQf5XYsXf01m82zgJxfry7dy+Qsz9/+ji8PeRve1KE6RlO4UeWAZgq//"
					    "ZVRE3Z5GYLsI2KKy3bqxZEZgEAFN5pxD8pNc/hLMv2te6B4lAeJrxFhDUF74vg5/F0bxQGmZpBjvfTei/OHf+7Cg/"
					    "L7SFXgrDumSgqTbeXTCPN5Ikubcl3lSObYRMALnRMCKyjnRd95GYAECmsxRQvh2Tto/gmLwua6Hur7XhcXjZ4Xn1gOUjHe6WqQ4KDuE5YTS0YsrP/"
					    "iXPiyIApB/"
					    "r4fTaRdZU5bmoTJgMRpbqkKBqlLUFM9kBIzAhhDw0s+GKsOiGIFKBLBgNMs4mqCZhJuTXfWM4oBVJZCeUVz49w7xGtIzy0SlyRvFpRWXRIoflA+"
					    "5nFabK0EsqbSUhCwueddsZGXZCOVrdh7iDyEDVqYhKileQ3HtbwSMwIYQQFFhYGAt2h15QxVjUYzACAIoEmMWCw5by4+"
					    "vZxJP1pfAVgoB56Pgl8cLYfqBN3kMEcpHUEzEh3gsMeX8GyVH/"
					    "ihQS5Zc5uTBUf+MYViRvtCVK1HyDoRCNoZZjGbHCBiBjSDAmBL2yd3XDR2YQeehLpMRMALbR4DJv2UJ0eQcrBZy8UdxIE6i1tKMwlACsLAUJ+"
					    "6YtsU/MYouikh6sUEpakhpsdLkSksTNvOmOg/lGY75l4tVpqSkkDXlGbO4zBTP0Y2AETgxAo2lFouKyQgYgX0hwLIPH/"
					    "ZLygRWjZexCPiFiTs+49Dhw5uJ0hA3femYsCFiGYZ9HyVlBisMm3fZoIpCgYKAohQ+"
					    "NDiQRsGzqDoP5UeZkGOMUNYCBmORHGYEjMD2ELCisr06sURGYBSBqAgUJ12FYc1oLBp67lpPsJxicWG5BEKxQen4TleulKB4kEdvaUjxWnkozuo0Mw"
					    "8UsbcIoXTPdHU/"
					    "hIgiQ1hePrxMRsAI7ACB+"
					    "zuQ0SIaASOwHIFmEocFk7UuLC6tybzLXnFQRlBoktWmG2VLz2GZS7IOLTslpWtLMlsWI2AEKhGwRaUSKEczAjtFgMPemn8ApTJoUmepBIWlu0yUohw"
					    "UJyzpyH0Z4zdhW7qRbFhKhixMKC8coW9rypYqzbIYgRkIWFGZAZajGoG9IaAJujiB15ZD6dkLE5ZOatNsLN73kn9q/"
					    "8rGRLY4RsAI5AhYUcnR8L0R2DgCmnQ/nENE5XuObFfJsyS7/"
					    "O6twtxMjIARODkCVlRODrEzMALrIeAJdj0szckIGIF9IODNtPuoJ0tpBIyAETACRuBOImCLyp2sdhfaCNQjICvOtWKz14XTbDlQ7Y38BjfhKtxkBIy"
					    "AEVgNASsqq0FpRkbgMhGQUsLR9JzHci23+cbQZZbWpTICRmBrCLD086coVHK3JqPlMQJG4PwIcLJrc5Dc+cWxBEbACFw4An9J5UNR+"
					    "U98SG4Ks2sEjIARSAiw/"
					    "PNTeljiyhqDRea5rta5Lt3nJbydxggYgYtD4F+pRCgqJiNgBIzAIAJSJFj2gRZbVMSDs1g+"
					    "lcveFr5wHM5mibxRgkxGwAgYgSICVlSKsNjTCBiBDAEUicGvLWfxxm4fKvCVFBM25HKMfzqEDd7hOz1jiR1mBIzA3UXAisrdrXuX3AjUIlDcn4JVRF"
					    "eVNUTxknLyRJl+l2X8WPdHLSllvHxrBIzABSJwdYFlcpGMgBFYFwGUkdJR/C/k/"
					    "5KspIiwPPRIF98W+l0XFpPP5N9NB69cUeGZbwmxLBQ+"
					    "LqhnkxEwAkagQcAWlQYK3xgBI9BFICogeLf2p8ifJZyP5aYlnEe654vMr3X9Nd6nMHm1KHwgUHFQUh7o4pl7kxEwAkagh8BVz8ceRsAIGAEhIEXiuR"
					    "yWaiC+pIyLYoHlBAsKS0KBFIaSAqFwhKUc+X0dfNo/T/XIhw5/"
					    "k4uCwgFyfOHY1hSBYDICRqCPgBWVPib2MQJGQAhImeAfOlUn0CoufzsmLspLUFD0/"
					    "ExXUmDkHXiimHAlyu+"
					    "Tn10jYASMQIOAFZUGCt8YASNwBAKPUUyUHmvKE91jdXl7BD8nNQJGwAgEBKyouCEYASNwNAJSTHy0fgWKwol9PWGPTkX0TUa5hDJsElgLNYiAFZVBa"
					    "BxgBIzA3hDQJHotmdlH87Eu/oH0g/xaG4HldxaSHOz5QUlZTVE5U3lRtji0r2pZ8CxgO9OLQsD/+rmo6nRhjMCdRwDF5Mc4ibJXZhNntDCxS5Y/"
					    "I9vKNXTr5VUZguInl6U+kxE4OQIoKmj3nHXw7uS5OYOzIcBAqYu3zLOSZOCtcpS2IuuokA6chUBNvc9iOBz5syyI9j70F+ks2mlvVXYsPC/"
					    "klv4FdWzmZymvyoI1hX+CUbZBUvgmxp1BAbMAyTo5NmXRfXt6BFCIwzlMLP3QmTmACc+zd2rJcOdJHQbzNRXEWxhvYG/kt9jMqrS8+XAy6GomZ/"
					    "FbRJRD13e6ugeBBX7yP4usyvdbCcBAxSFlF/lX2aEyyp/2xiSKy790GAeYgDj2HuLvxEe1HaUfrfebbI7/"
					    "7chJnW5h7wxy5IfcNQWVvPzNm4Pz6OvgXOzn8ic9fYP6of+ENio3r5fVyiu+"
					    "1P9XulBGcmVIXg0hE3luqi830s28UTlvpY3OFOsuR2c8oo29wqJi2hgC6jAojW908X2VL+lAS0VUWgYcDuAK5toj+NBg1iLM1QxwLVpL1hbT+"
					    "odQPsmwCyVFci6pj2IZxYu2wReNUWaZmJgwcZnkmQjXWj4p1rv4r06SnbJSjqPa/UqCfSU5Wn/TTnzlT3sDX15I+JxAjxSHARul8WfdUy+9Niq/"
					    "1corXihPKEWMHVxFUjzKRNl6caLf0eNOMePTet5aGz1tMS6LuxWV7dZn8fsqC8QdfJubyQvL2yqkQYzJ47owwK0l6xI5eaPdwqRWK/"
					    "uS+hgr41B74zj8JXn1yjFS7724x3goH9oRSsqvus5qzlf+YJ5bPUpFw2LxWhcKQouUPikLuEWFUXFWLa/"
					    "4gRsvR1NyIytxsLx06Zx9uStL9bPKPTQ2VfNwxPURuFqfpTmuhABvUUWT6kz+KASDfBTGgJK+zcJH5hZZb5QOeRloOU+"
					    "jMbfrnjeU5jmTPQwIes43F47KmqWtvlXexfLJn4H/"
					    "hS5OSOX+ia7XugIpfG55UtJFbiYPdcGb9Uv59d6c5zDPeBbL2OFFeTk1tku0nbyOuuFzn0v1PpdHiK/"
					    "y9epWfr8okHbIAXTEYyJttWn5Yy1AOSAu4Shi/"
					    "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"
					    "iOutt5eKy1xL5UaBTwvoHBba9zJ2a5xH5SqWK+"
					    "lfrfVNrpG2ffG4y9J4HvffPMNnQgTOObr2x78khx2T4yA6pYOOGjaP3H2Dfs4QGAWLg0SId5WZG2EHrmRrCglvDFz9gLKIEs3nIsRLCly2feQ/"
					    "iHzZ91j8sa8n9bxOculeYtW2CZJMi4uJwVSeib80Xo/V8ElG3uKmjqbkkPxqefqelN86pxPYYRJcor/"
					    "XsIjDmzqps0XSWGbGHeKwnU8Jetm22hH1DvxGOuDfnbvgKKi64Oujz98+HDwdbkYqI4fnLt+a2WojXfu8jj/"
					    "uv5yl+tTZX+m67tLayuUibJNlUtxzj7uTMlI+F7krCnLJcShbelSUT4cbFG5E7qpC2kEjMA5EdBbIVY1NixfhNVa5ZhlVTon9s57nwiojWHhChaV+/"
					    "ssgqU2AkbACOwKPlkRYwAACylJREFUATZcN39b35XkZWEpy6qb8cvZ2NcIHA5WVNwKjIARMAInRkBvh/"
					    "yjB4tK2lx94hxPxz6W4WKsQ6dDypzXQuBqLUbmYwSMgBEwAsMIaIJn2af27+DDjM4conLsvgxnhtDZz0TAispMwE4VXZ2fj5+"
					    "ZjIARMAJGYEMIaGye+ubThqS9TFGsqGykXt0ZNlIRFsMIGAEjYAQ2hYD3qGyqOiyMEdgnAlK0ORyNf4KcjZT/7vd/"
					    "nA08Z2wENoyALSobrhyLZgRqEdAkzcmxnKAKJYWB01XZxNmQnq/"
					    "1wL81OMCN48zfyO+oPQdKnw7KOutfbymHLv7O6H+jqGJNRuBSELBF5VJq0uW46wiEj9ZpkuaDb/"
					    "wVlmP9OXG6RQrjRGBO0eXbNpyWeqySgoLEl7sHTxpuCVB4UNo1/7b7g/"
					    "hxGqrJCBiBC0HAisqFVKSLcecR4ANrWEsSMVnz5dvSd2aa7w6lyEe45HOsopEsQEeIcZNU5UVhupaLAmUyAkbgAhDw0s8FVKKLYASEAMsdvY9SDiCT"
					    "ln8Ggmd5oxQUl1rkjxLzuy6Wn/"
					    "gw5iLrjdIhLwoXH+LEWhRI91hPmufkLzcoK3JZ2jIZASOwcwRsUdl5BVp8IwACmrBf6cr3o6A88BHA1ofw9JwsLIuXahLi4oUlJM8zBR0Uxof4+"
					    "GAdygkKVNo/08SpuVF6LCOfRj5s2OX5IJdy5BYkvBOxtLX5Dz0mYe0aASMwjoAVlXF8HGoEdodAnMTZLPtZQXgmd/"
					    "anrLHxFUWFvTAtEm+"
					    "WgvIvJZPX561I9Q8PFRUljPLAMylGlGPIgkQcZDMZASNwAQhcXUAZXAQjYAQiAprImaBZcvksm9RzfIr7UxQXS8UjuXMsLaRJikOex1d6aJZkohzBs"
					    "qN7lJiuEkG+"
					    "fLQvJ5Z1UFCCQiX3iQLzvTCP9dxNk9L3lKcUYNcIGIH9IWBFZX91ZomNQBEBTeYoAPzrJyx7xOeD3Nx6giWitKeEpZmXMFZ8llUe6fpEV9pjguLTTQ"
					    "dflJUu4Zfn2YQXeJAfS0RTSzXInSsqPL9UOpaFWstb8geHYv7yNxkBI7AzBO7vTF6LawSMQAEBTdZMzkzknCPC5I2y8bWuxroQ/eQVNpviBpI/"
					    "yyr8QyhZR7BwvJLfa1389Zj7FKbbG5I/"
					    "CgL5dqnnr7hYeY6loHyIF0pKUoa47xIysUfGZASMwAUgcHUBZXARjIARuDkzhcm7dXaKJvVgBZHLqa0sn0B8+RaX+FhOUGoai4bCUEwglICwvCI/"
					    "lJ4SsW8EJSe3YLDsg2UnKTHkE6w1JQaVfk8jTxQQ8uIfPRw017WmyCuUpWv9wd9kBIzADhGworLDSrPIRqCLgJSCj7p++bPC+fdN1d+DFfd5jI/"
					    "yEhQUPT/TlRSYnDWWEpSCRpFRPBSJVRUF8UQx4UqU3ye/g+KhFOHmilMT7hsjYAT2h8D9/"
					    "YlsiY2AETgxApxXgrUCa8qTeP+2lKfC2HzLGSnJelKKNuW3plKRFKepPB1uBIzAThCwRWUnFWUxjcBtISClo/"
					    "nHTk2eis9SEkf4s7n1fU2aPA7p8+el9+KDcsW/hdZUfJaK43RGwAishIAtKisBaTZG4K4gIEWAg9daFhQ9N0s/"
					    "Z8The+XNfhuTETACF4SAFZULqkwXxQicGgEpJFgtigfGKWy2NWVNeclfV/"
					    "iC8pp8zcsIGIHzImBF5bz4O3cjsBsEpASwUfWoLyXfUmH9BeVbAtrZGIHbQMCKym2g7DyMwGUgwEbV/"
					    "NC1TZZKClX4KGFUrDYpo4UyAkagHgFvpq3HyjGNwOYR0OSMMpFOk+XfOCyFsFzDd384Y4WNpuwv4dRZzj+Zs3H2WvGLG1/"
					    "lT77pkLV3ei7+fVhxqulInkFZUWZHy1EtsCMaASNwEgRsUTkJrGZqBG4fAU3svS8Wyy+cKyJpftCFNQTlhW/"
					    "osPkVxQOlZZJivOIeFIXB97Vczlnhb8xPJhlORFiBp7+gPIGxg43AXhCwRWUvNWU5jcAIAnFiL32x+KGS8W8YrCo/K15uYUCJyY/"
					    "Y5yh9PvYXLCNR8dBjIBSaJm70Sw5h/4gyfC93jpUm8ei6ozyVB+Gcflu08CgMpYo4JiNgBHaOgBWVnVegxTcCEYHBLxYTrgmdU2axqgTSM3/"
					    "j5V8ywUoiF0XmE7lM/igwxM1PosUvxJXbJawz/9SFZYXzVPiAYTjLRC75sCw0RZzFkp9/"
					    "MsgzMrqWm5aaSryHlKpSXPsZASOwYQSsqGy4ciyaEZiBAIpEPtF3k/JNHyb/REz07ONIhDKBgoE/lpnm2z8xArzJo0WKh9WC+B/"
					    "Fe06zxTITjuuXH9/"
					    "i6fKS1zBV8OS7RVhSsBBxpktuJUqMg1zpwa4RMAL7ReD+fkW35EbACGQIoBC0ljo0gQdLRpz42ZtCnEQoD+mDgyggXHx1GeUFt/Xvnpi2xV/"
					    "xIHigBB0UB2UGpSFXgAiaS6M8lU9SgrDClJQU8kPWMYvLXJkc3wgYgTMhYIvKmYB3tkZgZQTYFzL0xWIm7TC5Z3liOWnt70iTPq4u9pywjJNbaUpfS"
					    "kYZQgli6Qh6o/tcIbrxnfc7ylP8UareT7BEEWuVbyK+g42AEdgoAlZUNloxFssIzEEgKhTFiVlhWDgaK4ee0/"
					    "6UoITomb0qv+pC4cgVgHcdGVAgyKNZQlL8fB9LJ/"
					    "qyxwqeKFlv4a64va86yw9FhrBcycLLZASMwA4RuL9DmS2yETACxyHQTPQZGywyWFCe62LZ50u5udJy0DPKDspMaQkoY3Xy22CxkRzhn0yF3JJCVQiy"
					    "lxEwAntDwBaVvdWY5TUCxyPAYW/NP4Bgp0kf60PRIkN4IsU76kvJic8x7pisCkN58ReUjwHYaY3AxhCworKxCrE4RuDUCKBsHJOH0qe/MB/"
					    "D5lRpOcelZQk6VUbmawSMwO0g4KWf28HZuRiBi0Jgq8rAVuW6qMp3YYzALSNgi8otA+7sjMDaCGhy/"
					    "rA2z0vjJ4zuXVqZXB4jcFcQsKJyV2ra5bxYBDwJX2zVumBGwAgIASsqbgZGwAiMIiBF6FoR2NfCibMcsMZZKd1zWeRtMgJGwAisj4AVlfUxNUcjcFE"
					    "ISCnhqHrOXrmWu8YHBy8KHxfGCBiB0yLgzbSnxdfcjcClIMBJr82hcZdSKJfDCBiB7SNgRWX7dWQJjcAWEGD5J3wbaKkwssZgkeFAue4ZLq3npfydz"
					    "ggYgctEwIrKZdarS2UEVkNAigXLPtBii4p4cKw9HztkbwtfPE7H3IclJZibjIARMAIlBKyolFCxnxEwAjkCWFP4HtAx3855KB6vxIMNuXzcMB3KBu/"
					    "w3R65JiNgBIxADwErKj1I7GEEjEAHgeL+FKwiulA0JknxknLyRJH5llCix7o5akkpMbJrBIzAZSJgReUy69WlMgJrIjC0P+WFMplrDYFX+"
					    "KhgFJDn9K+i6GXHCBgBI/AHAld/3B5+01tP9hhuf5Sf/47YRcXPRuCOIKD+X9yfIn+WcD6WG5ZwYrxH8uODh7/"
					    "rwv8z+Ze+KxSWkBSGksJeFZ75mGCuwOjRZASMwF1AQGPBbyrnx0NlRVEZ+2rqMWvSQ3na3wgYgR0goMHjucRkqQbiq8m4KBYoJCgwLAkleqRw9qDg/"
					    "63cv+r6NgVm7lPd81FDBibGFw6Qs5IiEExG4A4jUBorGjjuffjgz4Q0aPjGCBiBoxCQAoJyc5Drk2uPQtKJjYARSAh4j0pCwq4RMAKLEUgKihg0G2/"
					    "lh6XEZASMgBE4CgFbVI6Cz4mNgBEAASklHNrGv3dYGvqzLpZ23srf+04EhMkIGIHlCPx/Os2ziVFQJvIAAAAASUVORK5CYII=",
					"text/latex" : ["$\\displaystyle \\left[\\begin{matrix}\\frac{L_{x} u \\left(c + u\\right) \\left(- c du_{dx} \\rho + "
							"dP_{dx}\\right) - 2 R c \\eta_{2} \\rho \\left(c + u\\right) \\left(t - t_{t}\\right) - c^{2} "
							"\\eta_{5} \\rho u \\left(M^{2} - 1\\right) \\left(u - u_{t}\\right)}{2 L_{x} c^{2} u \\left(c + "
							"u\\right)}\\\\\\frac{L_{x} \\left(c + u\\right) \\left(c du_{dx} \\rho - dP_{dx}\\right) - c^{2} "
							"\\eta_{5} \\rho \\left(M^{2} - 1\\right) \\left(u - u_{t}\\right)}{2 L_{x} c \\rho \\left(c + "
							"u\\right)}\\\\\\frac{c \\eta_{3} \\left(v - v_{t}\\right)}{L_{x} u}\\\\\\frac{c \\eta_{4} \\left(w - "
							"w_{t}\\right)}{L_{x} u}\\\\\\frac{L_{x} \\left(c + u\\right) \\left(- c du_{dx} \\rho + "
							"dP_{dx}\\right) - c^{2} \\eta_{5} \\rho \\left(M^{2} - 1\\right) \\left(u - u_{t}\\right)}{2 L_{x} "
							"\\left(c + u\\right)}\\\\\\frac{c \\eta_{6} \\left(s - s_{t}\\right)}{L_{x} u}\\end{matrix}\\right]$"],
					"text/plain" : [
						"⎡                                                                   2        ⎛\n",
						"⎢Lₓ⋅u⋅(c + u)⋅(-c⋅du_dx⋅ρ + dP_dx) - 2⋅R⋅c⋅η₂⋅ρ⋅(c + u)⋅(t - tₜ) - c ⋅η₅⋅ρ⋅u⋅⎝\n",
						"⎢─────────────────────────────────────────────────────────────────────────────\n",
						"⎢                                            2                                \n",
						"⎢                                      2⋅Lₓ⋅c ⋅u⋅(c + u)                      \n",
						"⎢                                                                             \n",
						"⎢                                                   2      ⎛ 2    ⎞           \n",
						"⎢                 Lₓ⋅(c + u)⋅(c⋅du_dx⋅ρ - dP_dx) - c ⋅η₅⋅ρ⋅⎝M  - 1⎠⋅(u - uₜ)  \n",
						"⎢                 ──────────────────────────────────────────────────────────  \n",
						"⎢                                      2⋅Lₓ⋅c⋅ρ⋅(c + u)                       \n",
						"⎢                                                                             \n",
						"⎢                                        c⋅η₃⋅(v - vₜ)                        \n",
						"⎢                                        ─────────────                        \n",
						"⎢                                             Lₓ⋅u                            \n",
						"⎢                                                                             \n",
						"⎢                                        c⋅η₄⋅(w - wₜ)                        \n",
						"⎢                                        ─────────────                        \n",
						"⎢                                             Lₓ⋅u                            \n",
						"⎢                                                                             \n",
						"⎢                                                    2      ⎛ 2    ⎞          \n",
						"⎢                 Lₓ⋅(c + u)⋅(-c⋅du_dx⋅ρ + dP_dx) - c ⋅η₅⋅ρ⋅⎝M  - 1⎠⋅(u - uₜ) \n",
						"⎢                 ─────────────────────────────────────────────────────────── \n",
						"⎢                                         2⋅Lₓ⋅(c + u)                        \n",
						"⎢                                                                             \n",
						"⎢                                        c⋅η₆⋅(s - sₜ)                        \n",
						"⎢                                        ─────────────                        \n",
						"⎣                                             Lₓ⋅u                            \n",
						"\n",
						" 2    ⎞         ⎤\n",
						"M  - 1⎠⋅(u - uₜ)⎥\n",
						"────────────────⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎥\n",
						"                ⎦"
					]
				},
				"execution_count" : 8,
				"metadata" : {},
				"output_type" : "execute_result"
			} ],
			"source" : [ "dQ_dx_inflow_x1_lower = simplify(S * Inverse(lambda_waves) * L_inflow_x1_lower)\n", "dQ_dx_inflow_x1_lower" ]
		},
		{
			"cell_type" : "code",
			"execution_count" : 9,
			"metadata" : {},
			"outputs" : [ {
				"name" : "stdout",
				"output_type" : "stream",
				"text" : [
					"dQ_dx[0] = (1.0/2.0)*(L_x*u*(c + u)*(-c*du_dx*rho + dP_dx) - 2*R*c*eta_2*rho*(c + u)*(t - t_t) - std::pow(c, "
					"2)*eta_5*rho*u*(std::pow(M, 2) - 1)*(u - u_t))/(L_x*std::pow(c, 2)*u*(c + u));\n",
					"dQ_dx[1] = (1.0/2.0)*(L_x*(c + u)*(c*du_dx*rho - dP_dx) - std::pow(c, 2)*eta_5*rho*(std::pow(M, 2) - 1)*(u - "
					"u_t))/(L_x*c*rho*(c + u));\n",
					"dQ_dx[2] = c*eta_3*(v - v_t)/(L_x*u);\n", "dQ_dx[3] = c*eta_4*(w - w_t)/(L_x*u);\n",
					"dQ_dx[4] = (1.0/2.0)*(L_x*(c + u)*(-c*du_dx*rho + dP_dx) - std::pow(c, 2)*eta_5*rho*(std::pow(M, 2) - 1)*(u - "
					"u_t))/(L_x*(c + u));\n",
					"dQ_dx[5] = c*eta_6*(s - s_t)/(L_x*u);\n"
				]
			} ],
			"source" : [
				"drho_dx = Symbol('drho_dx')\n", "du_dx = Symbol('du_dx')\n", "dv_dx = Symbol('dv_dx')\n", "dw_dx = Symbol('dw_dx')\n",
				"dp_dx = Symbol('dP_dx')\n", "ds_dx = Symbol('ds_dx')\n", "dQ_dx_def = Matrix([drho_dx, du_dx, dv_dx, dw_dx, dp_dx, ds_dx])\n",
				"L = simplify(lambda_waves * Sinv * dQ_dx_def)\n", "\n", "L_inflow_x1_lower = Matrix([L[0],\n",
				"                            eta_2*(c/Lx)*(rho*R)*(t-t_t),\n", "                            eta_3*(c/Lx)*(v-v_t),\n",
				"                            eta_4*(c/Lx)*(w-w_t),\n",
				"                            eta_5*(rho*c**2 * (1 - M**2) / Lx)*(u - u_t),\n",
				"                            eta_6*(c/Lx)*(s-s_t)])\n", "\n",
				"dQ_dx_inflow_x1_lower = simplify(S * Inverse(lambda_waves) * L_inflow_x1_lower)\n",
				"print(cxxcode(dQ_dx_inflow_x1_lower, assign_to='dQ_dx'))"
			]
		},
		{"cell_type" : "markdown", "metadata" : {}, "source" : ["### x1 lower inflow (with relaxation term; zero normal velocity)"]}, {
			"cell_type" : "code",
			"execution_count" : 10,
			"metadata" : {},
			"outputs" : [ {
				"data" : {
					"image/png" :
					    "iVBORw0KGgoAAAANSUhEUgAAAK4AAAC1CAYAAADGHcS2AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dXZIdJ9KGjzr62iHLEb7/"
					    "5B2MrRW4ZwcaaQXW7EATupLvOuwd2F6BNN6Bxyuw7B14vntHjNyhDWjeBwFDUVBF/Z6qOhBRTQFJAslLkgUc+vT+/fvTGs/Lly8frlFOLWOd/"
					    "pxDzlMwcXVawX399dfPVcxfViiqFrEvCTy02Bhc63uMnCWdKvZY/B/J/8cc5YgPA+AHPQ/1vFb473PwPTqPPrkpHeXyVz03Vhb/kn9n3+/"
					    "Lf6DnjZ5/iNbF2+Txni33Tv73Q7jck7oGCL9mMv0ohn/LpPVGKy8N/ln+573EAwnEkxH3N/k/"
					    "Dsx60eR9crPpv8lv9ZnifpLwvtDzf3qfE7zg78uQp95/VxzKqeWUdu86iP1W7xCH7t9hYMT7N8rz3Yh8nVlU8VArdNLWxP9JoE9uSnfm3Kv/"
					    "5Wq80ZfI/pke8DKXgy9YCWdPwrFjRmAGP4XA/U4VnwrUuKAn4hlWJk4fG6YB/"
					    "xbv2Ub92IrsLF+f3PoUgtOAn8zZbvXj93r+1OPNEOLiMhRHlAHuYh9nKoQC5h4IVByHgLHBqhsmgT65AeyT+u63DFuTrrScRs5kK4oGK0+"
					    "KKEV0XUro6NQoVPh/bBiN9ybTUBrZC64+fkpnlFMmDaNceDKl3eoxTjTY0kxfn+n5VeHGaFX4n4r/"
					    "Sv7iGlplAA6+CyiLuqNFlhrAYp92KrNXbomcWWCLHzInnfbkgJ1gWRxFv4KZRt/"
					    "lchcD1woC45yKmw8i+dgmdJIbiWE5GPFZ+7aEn2gQFKD7XO+m8+VTB1w4KF4onnqh5Vlx8I1XHIB+LH/0R6byFzmVwQC7L9+YR/"
					    "KpPx8eHxcxmInIllsiN1+i8jj71snXpCmeAUB7kO2SH8N8XyGvIlcMXHGjQawyhF/xqHav+aIS0YJvo7gw2MlP5ZAf4ccaCwDz1Wu0p3wE/"
					    "oseHAMoLpO4JTQE5XmnetCxDBC0vnMsHwHkGz3hQHPps/"
					    "sqp0huiYIdaFi6ZAA6B6B+Utwsy5mOacKn3xgkRa4IuKo0mhOmDZAqvkuTPBC9AVdck0J+Tnt57Wn5IOBw8PCR5oCZGkjQN+"
					    "od14eweFAea5lod8ePpFKHpo8713UEYGo5lUP8z3qS6a0MHyLQel31K5VbzN7MmuI9eGZSnqmyoy4opGI5FAFXDAHEv1TBO/"
					    "lzuBJ+hiYsTOXTMMDgpzNXJ/kAlHQPdMVBS1yJtmNwPleeLlCIpO2Csl9HqdQJl+SpfMiztV5qcoz/UyS3BHvqmqxngjaOGi27gFFW0QU0/"
					    "vXKv2VeJFw6nseDJUMaR7+1+RrxJfw6aOiUk9JTQERTxEtkTN/Ql3QItCm+sOhzlO3Nl4D4qd6p0yofZyon11ddckM+zr4d2/"
					    "4psnPiou5gpsj1alw1iu04mN2lOCotZ7/"
					    "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"
					    "WVye4u7r+SmO32KY+"
					    "utR1d6frs40XrZYLNo2tFVP0las8aJNWSLjIulYK3m7UmlZp7yYNfflO82fpV0gwcwSKtusoCT4YwLF7UqQbStqV6bCwqJjmvcrDJSlzg4/"
					    "zhrFWxBijvRNwyaf6DAJ+"
					    "MVxaN40eC4RUHnYzUlgKg0ws3IyxbZeotq9PCtwrYjUecnOzUnQdrazt3NkjXjlwU7G5tyK8xekbKVCpfUAuB9ZYueX5l2VTh2+"
					    "7H9ZWbE1asuKpXUXlaqL4uK16m4m66V+6orajcbdsDCdLKu/"
					    "ogT4OHtny3P+isXXoqoEBkngD0e9G43rKrw1XzPBjeqEfcwpLxb4f1FcvD6s6OrmlEAF7kRpCqSsLLAsdiM/"
					    "3lmbyL1mz0mgruPmJDMsntWFeAt6GIdKPUgCFbiDxJUlxlzwZxyyVDVhNglU4E4UpTUT4FI17kRZDslegTtEWmlatC3nYHe3+"
					    "5Ruzj5iK3Cn91PSvhWQOZsAqKtbQAJ1VWG6UAFnaruY87W3sBeAWXXg0DrnIdyPNjn+mMonkur6JFA1bp+"
					    "EOtItIKFo2LeKZ02X87fuAA43OvJjzFd6uF/BXWKiYHVjJFA17hipKY/Ax3HHpzY7J7945QANmhUN6w/"
					    "gWKAqyvw6wqw+KC78yRBp1Q2QAMB1x97eDsh38aQCHrtjRTtkouUf/0ELmA1gFX6mx/1M/"
					    "uLlWSgAZjZjXmEqPNTDzz4e6KluGQk8AqhijbZ9at8bh9aXKfZwXPmeAKunaiqM7FuBDzs2/"
					    "AeBWU6iPctWsMp1mj5bt70m1I+zET1nNebm125VT3Mb44gmbj5LBe7ALhIY+ABL3rw4kNVa5Pw0x/wkf60C1yinAne4lAGBsbOGZ10/"
					    "h0DLBw0n17b0k6HJgjikjWs1jFvoZwdrztsZAUFr40BxfDiwDMaHmLFp5RtNJ3/00tdMfA14VbfchSCTgbQ2g8NpXHU0N7K4/"
					    "0fLlzsXhzhtw6940ZaA+Xs9AAogPpTf6yzdXUyoePhzoTJLXlxz5Mrjlpoi3jFPwjPypR5+XTlV1t7iDqVx1dGAcsrtjG5rln7kp+lcM2/"
					    "uJSBCDhCm1rtZSmQgsNJA+"
					    "Qbc8rnl5pHixroiviqDevEL4tZMYAumPqMH0NjKL5nvUMCVoJ7o8UtP6kg6zANPYbSOvztBYYDK6oABmt6Z2s1VS4oDhD/"
					    "oCe9WuK+wo9XrBydaczJM/"
					    "lPF+OlYYfj7c7o2XPKhxE4cA6CIr8rATOm6+ys12JRlv+5owAVYXccL2Y4N7U06PDxnwAXPABntBAjjjzB4U0bOwc8PHL1jhvjdNb0ziMZM2Vm+"
					    "4snWM5r2ULcxqj2d7qozdX+JAKMxJapj3QcS8di2XgMrDIhCjehAC1DQUo3dLZu3wV80oSMPz0m00IVlET3WZfmqHDMw5KOlvbaPCqIuXRo5It9+"
					    "8FpV/MhW0/nbr3W+hmg7pnoHLrTjrSUnzms/GwdAvV1IPj1oVexV09nyP9YTmge5mxdhCS+2dNHsJ/"
					    "lznUXI8lUZtDGsH0XHjgHq2xkn7ijcuBDkna2483fUjmZV1YmALtlBSsMk8GaBws6+"
					    "NaaFBQBayd3iAiBSDg1OGaHJYejiMlKZx8T18GXwmZlBdK2DO7ZdJ/"
					    "mmnWPK31CeP1xdrtzLBfq+w2m7OhatxXRL52M3vtDDDllDmykM+DE5nFZX8KzOmCOqz6FuY+"
					    "yTKKbCpbrU7YxFU7tAAsBXv3kx1VGqR9css9vbGFNtDeMuFriALxTE0Hflx5bOmRND2S1Fv9vbGPsEchjgCkRnuc1R5fbJ+"
					    "KzpqfopztnxZ63blMKPBNzdd8aUjry0vJf8cXZpfX2o9h5G456rVzTt3qhs7GW2iNkAqLc1SghLuwrciRIWcOttjRNlOCZ7NRXGSK2dh50pv7nRTq4"
					    "xc0ugAnceiWIu+DMP87CsXLokUIHbJZ2CNJkKbB3jqsb9IIdV/gJct/"
					    "PCCaTqhksAbcupsiOcBRje+nVzoBzMxhHAfaiHc6cP9FQ3XAJJ+1ZA5jwDoK5uPgkgT3NG+no+"
					    "nhfLCWGmto85pHOLVARgzAmOOtbbGhHIDK7auBOEaAEJh4Z9q3jWdOttjRNk25e1atw+"
					    "CWXSBU6OPvLzHhynxfA5dINmRcNiQhinNHfqDO1sVh8U1zrPa8mrVyCBCtwCIaVIBDx+TRH/"
					    "oiJFehKtu8MLMBvAKq516DuZuUYmJVCBmxTL7JHxbY1o5cbv2WYv8eAMK3AHdLC0JLZr0Q2NIVvlC3/5Gyat9h5o/"
					    "dXKXLKg+nFWKF2mdpHudr1W9T/"
					    "UzY0VuAXAVafz0bWnGxpzrTrMzY0VuLkubsbzy16z8N2M3ldIA5Bluxs7EPdV+ai2h7Fx1RmAa7UbGlXejcpj2Su8nRHNzI8oWR7j/f/"
					    "18G+hRm0HL1SGAa/qlbs8REnbd2hcdxGI87df66iG6uBVb2i0oEzdzvhEVXtI9URzJw/AmjBxQ9yCZez55kZ/"
					    "IQjAfWcF6vwh8j07rTqYKbzrhka0Ioe9Qw2DNmwdKhIN15OSFjqAF9M+UFzrdkbFsU4bHm98pfAobat8o8pQ/"
					    "dmx6zJrGFCjBpPyndv5C0GOYCqg5fxykzqNjvnNSVhhwNR1Q6MhFR2rBqkOBcjw9E60Bozy2TkLBwTmQwM0AS0DCHOmz2FmZG9qVOZsGZYx6V33hMW"
					    "DsK8+m0w/AnABVpdWY7E/3F6lY1NnC4gL6RQ0Dt6UkXKA0QBVYIOGE2Ehbw94xTOY/"
					    "DZwilkmbkgZbENz4OfwNzdiKuzdAYiGphRIjGaTTzxg8hpY4cZ0rjSAkV2ftXkb/"
					    "EXvHMB0GowB4p3y5a5E8jSFL8VlqEyzBS0frR3OBGFRtKVLI4e0m30/"
					    "gsYdfUOjOhct6f7Pblcn5W5oRENzVT8fPAAMwDBoAIaf7vU+xRWXYdtDPbocAzd1DLMrz+bSdg9cdRZTebIjlMa07aduhWPt+"
					    "kDpaGSmWBzaCCByhX5ofgBGymiYEqJp8Ff67G5gGZhBb6iE8rUO8SiOgUpa2DaidueudlfjaRX2HQsbOlAP06s7dpjkLhoACsBzJkMy3xkijUmkeub"
					    "MFDcAz1C1eYvcvcYdKI7WDY3kV0czvQJgYyMSFzvRGDNA/"
					    "q2lj0nOHla9umYfwMyW7+61LYK+"
					    "KOCq05ImRSnilH8PNzTmmnOomxt3DVwBqd7QmINpIl7ySsSaGWd3FwbuHbi7E3gSOTVysAQu7eNssIBqhm1KAI3rDHq3kL7Nmm60Vpp+b1Q1bGd+"
					    "HcGif72tUUJYyLG6Y75T0Lgs8bBtyZpmdQMlIOAiTLMBoXf+wV92ZWIg60relgBKwmyxV1OhLZwxMexGAeDqVpJABe48gkYThMcZ5+"
					    "FauWQlUIGbFU1ZgkwDtpFxVeN+kMMqfytwp4sZbZs9XTadfeWQkkAFbkoqw+KS9q00MWcbAHV1C0jgegGel8YScKa2kl8o/"
					    "hZhWHOC87r1tkYEMoOrGneCEC0g4dCwbxXPmm69rXGCbPuyVo3bJ6FMusDJGd6nNpmTY7xy3hXNygcbJoRxSnPHJtHO9bZGK5cpXgXuSOkJjJ3HIEO"
					    "2gNzSA2ZzGF3h1kHvME9975ZABW63fOZKrbc1ziVJywfgfmTfnT9zEZWdtKv/+XyXNESHXbzrg94Lt+FTJz+A+84GnO/"
					    "SNudLKDeqFHbkQz3m1wyKa3wYba7ShRVSO7CZAe2mgVvQBwy+x3qWOLPxhxPn3lYV+OnJj1Yo2IqH2Galo9WWT2ib65gN+"
					    "519oDYYRSKfnwot5vYG3M8DSaB1+a3Yrp06mBmEXxY3fkG84Ub19oHagrZlpYW2LeJ2BVwJIpxG+cVqke24iOTmY0o7zFG9+Vgux2lAH9Am2raI2+"
					    "WqgoSHUPjhovk59iKSWY/"
					    "pE7UjtfN2Ujwa64ketFeo6SbVTrxYZ2ZnDxMFOSbtUcUjZ6Z81qG5a8LL26Zl+"
					    "0DpXAr4px5oZp8Zd6VxJbyThMAoNgLTOx80u3WqP8AJZxHfFqUBLkADeGedcsUbAPJ9gE39SE/"
					    "LiYYP4Qd6uIeMgROCtrQPaBsDb3a3K+BKeL9KAoCVkcwvfJOaanYpLccweUCH4gCKHjRhEtgzVAkN/"
					    "koPA6ThVK4bLPiND2ClDekDPtT8DmKjkImBzZoKEhCjOr5hvHe6VD60FHQImE7nI46lM5Zpim1i0dJpTKfUAa10qzijdeSjjehwfxu53k+"
					    "K54u7uAxlYXuY6fhcjvYgn9hhvjDVcz1r46NRcb19EDDjDjVkNbvbpMaVcGgwlyyjcbgLCwD1OtG7KRWBAwiOFtIBCP9Gvukk6FLvUQE/K/"
					    "xKdNSBU16ET+SV17qNXPEAeWgnweutnlWd6oocfpVvtLkNmzronTZgHhhNLN+"
					    "bCCMqSduMzEfk7cxy1Zl6hkQJCsBxp5fbWEC4XxZW5YHoXutB6F23kGN3/"
					    "a4yMDcAeQM8iscceSPfdRp1AOwAjTJSt5HT4QyyhlMeNH1Oq8LrrpFhnYABpy2KNiKvk20f7aS9IQ3JY5yR25iMfXmu+wjOkA6o/"
					    "HQrIdKxDkCd1bECP8nHrgKQxilMx9zJ9yDRe9dlItjOof3MlH6y+Q0PvT9VVAhIzImGPUgeOQDADDKrU/m0CXOqz/"
					    "FhBYBCxz9UcSfWGGzUnQ81YyJYQmSYao9NLvIWG5gA9yNbBecX1WhBovviHQt6aHEALbTNWtpDHUc50DXusbXxTG+"
					    "h9mQg0bGhg2cIXMLYwZgRZqDJR3MzAHI3hL9VGvUY7GwZc3z4MKj4H26xjAiHMhxcR2WgbbRxLvepY4Sp8M4GnO/"
					    "SzuXT6Q27SEIt0SymvqIlL9OdAY9tRKw9ECY2L+YI++rh9iQddlLcnfXhR9xXhCNnBphoSaeTCJv80Cke+"
					    "xgfrRcDnyToG20lckmnelBeOAMgJwawMxGoL9ocP5QhUUMdGneqEgrL/MMFrt3Lhny0G+u0rkMBBB9HpY58BjBBBsAUTv1oQANMxTNl/"
					    "ml9eWb5hvMQaEtoWJFganX0ChoHkKknIKBzACYDwHe20qh7nE9R3kHLNN1yyks7qDN1x042qyzy47a18uYilNfNAJhNLLcxcJlZsOfNwLI0DHRo+"
					    "J9tU7QuKxBeHnqfzW0OuBIUIAhBNqixyk9nuA+7k8JoDzohHPn847yPA8YhuNA+TPkpDemz2PSQJnx3dIDuDQHRP9Pj7EqX/"
					    "kov3hZ3kfiipb5TQBOyM+/"
					    "iCegbwFccbQeoxqVoXNoIP1YYI1iks1ylow8V68ETtOordZAzEV4oPly1AOge+EGeMa9G26gsNHGLp+"
					    "JdupmaxxSw1Txqm5kx5bfaPUedN6dx52hUxIOpvqHVJMyUdjxZYYdmRMRqWFD8SmYPTABmmNGzzLBarUbNbFH8bTK0VocHrsBTDAgLND9tDhXmGHqV"
					    "yZowmy3YsaE5M4bdJvLQFlWE9hTLfmjFL8FUGCqTc9DzQRourZ2jDnOWSVsWAy0VrcCds7tG8pJm4gOJJTO++nftbBtoy6Kzx+FNhb2gwHZ044t/"
					    "L3UP66l2rNKGWYCryt5X5X/Wg1/"
					    "quAS5scan8Fn+GUlphSvddAmoj7u22osLmAu4THVDjrslKzhXo5LMa+ShJFBt3EN15+U05t7793V2XrK7NYvciD9f2I/1sH5c/"
					    "7mJhDDV3Xv58iW7Nvxa4DMJedEvwamV3Wt+yZXVAn6CHm4z77U5Z6u35McOJD/"
					    "avFdNhXW6gU2NRbY+16n+9kqpwF2nTzAXph7KXqemOymlAnfhjtK05g7QVI07o6wrcGcUZoYV2jY+"
					    "VpkhrdGlEqjALZXUeLqkfStNfF8PoK5uhASuR+SpWYZJAHCmDpxwDvgWVtac4AA7RzDdXRL86iKVjywX76rGXRACFpCU0LBvFc+aLsf+"
					    "2HHEfaF3fh3BLyL44SLvLk2v1cUSqBo3lshMYYGPtdunlh2npXjlLAealQ82f+7XAlVR5vdlZvVBcbP+bAfmR3IVuAv1poDX+"
					    "n1XrijR1n9ukhNOJr4CNyOYlaPrPzcZKPAK3IECC8mlKbFV+Zn3pK1y5ecXELO6QIvPyncrzOrH2cieEDDYN9/s+qzq962eI/"
					    "0cqNFTFbgNcZQFBAg+svj6b6wWlOVelYprTxf7pe2qLYkKq8CNBFIYBAyb12Z2YN3YgVbYtH2QHdbGtZrGLeazS8XUyfQ++dJn8QAMyc0BW667m+"
					    "utwsk7HIbAYyJPZoUbPZPrMaTOS9MeUuOqowFO42JoxTG947gcBG0JmFuXPkPQ5ZTnodKTmwNKgy+XQbOB8EaPW8fV6zg3A89fVLJfMx5Xi+"
					    "3lOpzGtR2duhj6gcT/"
					    "Wo+5Dkl0oQYC1G9d9yiN1QIuozOaU+Hwzi+A62ldHuuT9oOtw2v5c6wWdPJUGaRz+"
					    "V5yBlAagwyaQ7nDAVe980SPB4w6lI7zvyZWGO3jr2RSmF0sVgeMFpUPsPk1CGAA0NCGwCXO0MqPHbtd/"
					    "NoZzctNh5w3MEtl8imn5EMpvpMgy1P8cJgBzjQxEdGf3CCLyPYVPCJwAVbXuipbruF2Kh0frg4ALgBHPJo7nmbhTRkNJzq0GvQf23e2btHc5p4BxTF"
					    "4Yl6KyrsCnmwro2lzF0fD3NSLlyO5qyM1xrYFgDSmRgHAaDoLBGxbr4FFC5jc+QAAycOt4oAZv7F6YPM2+"
					    "IsOBw8GxUk0gBtTJBwQJA11nTxVjhsUaOnQ9AnLoa5dGjmk3c37ETUuZkLuYmg60XR20ENo1oZ96ECArweblWk/"
					    "1OJo1viSOgYHgwJTA8evecMB8iF22N9OnuLPILvrYcnAbLSvh34XyYcDrjoTgCU7SmloQK8FFXb2rQGlwti6bOECwBAQb6PeBFCU4U0O0Yd2cEQ+"
					    "LljAk0HH6sVJtM9ieoUBNmnhoCNq9+5q9y2Y1gDf8QEbNDYalhNbmAlcFRWC+"
					    "KQw4AfcKZMhYLX4q9HoqodZKUmU5gZYImnfUYfTuAO7I3Xpc1Zjh7wFFuxKAH6rpwHskG7Jd5WbravSADNbvofTtsj0ooGrTk2aFKVgU363ZFaaZU0"
					    "61pHPMqDWaOShgKuOOst9Uip3jb4aXEaqXoqb5bbEwZWZOcPRgHuITpm5jw/J7tI/"
					    "zg7ZqZfQqENp3HN0mKbeG5WLrcwuGZsA9TZGCWFpV4E7UcICLtutrAffyPdnJCayrdl7JFBNhR4BFSazO+"
					    "U3NgrzVLIJEqjAnSC8ICvmgjnvEMTV1wUlUIE7UbjWTIBL1bgTZTkkewXuEGmladG2nHE45A5Vusnnj63And4HSftWQOYsA6CubgEJhKsKv0vQcREc"
					    "66tfyrFUmmHAmeEkYgcAAACiSURBVNo6fqH4W0glQ1YdOKtbb2NEIAVOMuMM8cMcKcDNHtSwabm8Fx9vAYkcGvat4lnTbd3GaOk5mMOdDJzcqi4vgU"
					    "751H8XlRdcZ4qA525jRJu6w+mcf0WzEte6MMTmOcl39CKrbpQE+D9n9VlWBvqXXM+Rsfyf+Pdc9v1Zlft4uVeNO2q4D8skDcsvhVnnRSN/"
					    "ogf77Y3ip/60R2wu0/0XjKK+EieIZeEAAAAASUVORK5CYII=",
					"text/latex" :
					    ["$\\displaystyle \\left[\\begin{matrix}c \\left(c du_{dx} \\rho - dP_{dx}\\right)\\\\\\frac{R c \\eta_{2} \\rho "
					     "\\left(t - t_{t}\\right)}{L_{x}}\\\\\\frac{c \\eta_{3} \\left(v - v_{t}\\right)}{L_{x}}\\\\\\frac{c \\eta_{4} "
					     "\\left(w - w_{t}\\right)}{L_{x}}\\\\- \\frac{c^{2} \\eta_{5} \\rho u_{t} \\left(1 - "
					     "M^{2}\\right)}{L_{x}}\\\\\\frac{c \\eta_{6} \\left(s - s_{t}\\right)}{L_{x}}\\end{matrix}\\right]$"],
					"text/plain" : [
						"⎡c⋅(c⋅du_dx⋅ρ - dP_dx)⎤\n", "⎢                     ⎥\n", "⎢  R⋅c⋅η₂⋅ρ⋅(t - tₜ)  ⎥\n",
						"⎢  ─────────────────  ⎥\n", "⎢          Lₓ         ⎥\n", "⎢                     ⎥\n",
						"⎢    c⋅η₃⋅(v - vₜ)    ⎥\n", "⎢    ─────────────    ⎥\n", "⎢          Lₓ         ⎥\n",
						"⎢                     ⎥\n", "⎢    c⋅η₄⋅(w - wₜ)    ⎥\n", "⎢    ─────────────    ⎥\n",
						"⎢          Lₓ         ⎥\n", "⎢                     ⎥\n", "⎢  2         ⎛     2⎞ ⎥\n",
						"⎢-c ⋅η₅⋅ρ⋅uₜ⋅⎝1 - M ⎠ ⎥\n", "⎢─────────────────────⎥\n", "⎢          Lₓ         ⎥\n",
						"⎢                     ⎥\n", "⎢    c⋅η₆⋅(s - sₜ)    ⎥\n", "⎢    ─────────────    ⎥\n",
						"⎣          Lₓ         ⎦"
					]
				},
				"execution_count" : 10,
				"metadata" : {},
				"output_type" : "execute_result"
			} ],
			"source" : [ "L_inflow_x1_lower_zerou = L_inflow_x1_lower.subs(u, 0)\n", "L_inflow_x1_lower_zerou" ]
		},
		{
			"cell_type" : "code",
			"execution_count" : 11,
			"metadata" : {},
			"outputs" : [ {
				"data" : {
					"image/png" :
					    "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"
					    "YTGV+iixqYiaw2x8F/"
					    "JjKG2twIACMTq5kN+ANm62AqMKpK1hRlHcaQU2ooATZiOBtBvLKOCEWUZno2xEASfMRgJpN5ZRwAmzjM5G2YgCSBgX8ttIMO1GNQXwWI0L+"
					    "VWT1wfemgL4taYL+W0tqvanvgJew9TX2AgbUiD7WbKLeIzAhfxGThClPkpsSqLmMBc/dYQJMi7kxzOjYJX6KLEphZpDBn5awgQZF/"
					    "LjmVGwSn2U2JRCzSELPy1hQpiUQmkUuJJVcmwVm6FU+g8OKfiZCZNSKI3qVrJKjq1iM5RK/"
					    "8EhBT8lYWK4YyEHilOyrI5S6qvepuTYKjaDqvQfHDLxUxImODEZ7ilSwU5JqsLX0pqUHFvFZvCU/oNDGn5WwlCYMXs91rmSPiXHVrEZeqX/"
					    "4DAJHwnzpGNM2709yswtlHYU2IkfVnJsFZuhUvoPDnPxXciPkewsp4ubK6YX83dOk+"
					    "lj33W2VfGbQGoOCfgu5MdgdpZzXDyVWmtLKSR3IjklNimrOaTgZ65hUgqlUd1KVsmxVWyGUuk/"
					    "OKTgpyVMDHsu5MdTo2CV+iixKYWaQxb+FR1KsjdxHBfyGxZTqY8Sm4qoOczGdyE/htLWCgwoEKOTC/"
					    "kNaONmKzCqQNoaZhTFnVZgIwo4YTYSSLuxjAJOmGV0NspGFHDCbCSQdmMZBZwwy+hslI0ogPswLuS3kWCegxtxiRbPr30br5exj/"
					    "si57DhsRoX8juHSG2JYyTI8/BnX/shLB/8PAcX8WvNfSG/"
					    "7Dv95+C8OYoUiIS5C+i7sF+LKMyG9RpmtoQ+QEsKpI8w8dfDhfxGziClPkrsEUkW7ZqrQeoIE2RcyG8k/Ep9lNgjkizalaFBWsIEGRfyGwm/"
					    "Uh8l9ogki3ZlaZCWMOF9SqG0yioqObaKXTmkkw+fon9mwuDSW6nYAH8vjn71puTYKrY65sRP0f+KR5tjY7ibck2dv5ufA3Xyd5UcW8V+"
					    "HKzQYRdtuAGIk3cX73GB6GPYn8NW2zL1T0mY8JTJcD/i9ZSkGvn67C4lx1axHwQtTlzMNl49aFzmTZr+mVOyQ65fH/"
					    "rACvqVHFvFXkHY9xQm6Z81wpTWLhSC2f2RDSKr5Ngq9pdQx+jy+cubgZ34zOVA19zmNP1TEiYcvY8XnCpNu9jGxf9c50/"
					    "6vpJjq9j9QIUGtZKhD1Pcz9Q/"
					    "c0qWUiit6HFeo5Jjq9h50Zt3pBT9MxMmpVDaPE0OflvJsVXsg0FZ6AMp+qclTAx7LuQ3EnmlPkrsEUkW7crSIGUN0/"
					    "P8JvZdyK8nyKNdpT5K7EcyyN7O1sCF/GSxaxc4/"
					    "trvb1iGArhv9zTeV71xOVfp4OdCfnNF9PdPUyBOvvfxzd+6JPk99n847Uiab6WtYTT0jXpOCkSS4Ge+H8LiihU23Gp4sd87k3+"
					    "y1zBn4rZpihRA8Qs8NbzfInEwJbvr3p6F8QhzFmHaDEncxJbewJ6rpBNmroL+/jEKYDTZ9b8Qowx/0t5vXu2+p2SrDc0miWE69iqShEmDEefHc/"
					    "LUCXNO0TpzrpEomI7tC+Kdqyuekp1r5MxbooATRiK7Qc9VASfMuUbOvCUKpK9helc98IOxZ/HCs2WrupSo5NgqNs9upf/gMBc/"
					    "dYQJMi7kxzOjYJX6KLEphZpDBn5awgQZF/LjmVGwSn2U2JRCzSELPy1hQpiUQmkUuJJVcmwVm6FU+g8OKfiZCXMbpErFBrh+Qb96U3JsFZsxV/"
					    "oPDin4KQkTwx3u2B7aWD3m0Oeq9Cs5torNQCr9B4dM/JSECU5MBjx9OrRNSaqh72a0Kzm2is24Kf0HhzT8rIShMGP2eqxzJX1Kjq1iM/RK/"
					    "8FhEn5WwpTWLhSC2e1CflTkoa2tzxpio+aQhp+SMDFH5FSsNO1iGxf/D0+Xhd4pObaKzdAq/QeHTPyUhOmESSmURpErWSXHVrEZSqX/"
					    "4JCCn5kwKYXSqG4lq+TYKjZDqfQfHFLw0xImhj0X8uOpUbBKfZTYlELNIQv/"
					    "ig4l2Zs4jgv5DYup1EeJTUXUHGbju5AfQ2lrBQYUiNHJhfwGtHGzFRhVIG0NM4riTiuwEQWcMBsJpN1YRgEnzDI6G2UjCjhhNhJIu7GMAv3Lyu/"
					    "jasBj1LfRhh/eeLMCTSgQ5zv+d4HdkLNImLHiatLnv4ZIu90KVFRgtHTt/wEhzpjRY2O8XgAAAABJRU5ErkJggg==",
					"text/latex" : ["$\\displaystyle \\left[\\begin{matrix}- \\frac{1}{c} & 0 & 0 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & "
							"0\\\\0 & 0 & 0 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & \\frac{1}{c} & 0\\\\0 & 0 & 0 "
							"& 0 & 0 & 0\\end{matrix}\\right]$"],
					"text/plain" : [
						"⎡-1                ⎤\n", "⎢───  0  0  0  0  0⎥\n", "⎢ c                ⎥\n", "⎢                  ⎥\n",
						"⎢ 0   0  0  0  0  0⎥\n", "⎢                  ⎥\n", "⎢ 0   0  0  0  0  0⎥\n", "⎢                  ⎥\n",
						"⎢ 0   0  0  0  0  0⎥\n", "⎢                  ⎥\n", "⎢              1   ⎥\n", "⎢ 0   0  0  0  ─  0⎥\n",
						"⎢              c   ⎥\n", "⎢                  ⎥\n", "⎣ 0   0  0  0  0  0⎦"
					]
				},
				"execution_count" : 11,
				"metadata" : {},
				"output_type" : "execute_result"
			} ],
			"source" : [
				"def pinv(x): # Moore-Penrose pseudoinverse of a diagonal matrix\n", "    if x != 0:\n", "        return x**-1\n",
				"    else:\n", "        return 0\n", "ll = [pinv(l.subs(u,0)) for l in lambda_list]\n",
				"linv_zerou = diag(ll[1], ll[0], ll[0], ll[0], ll[2], ll[0])\n", "linv_zerou"
			]
		},
		{
			"cell_type" : "code",
			"execution_count" : 12,
			"metadata" : {},
			"outputs" : [ {
				"data" : {
					"image/png" :
					    "iVBORw0KGgoAAAANSUhEUgAAASUAAAC7CAYAAAAjfIjwAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2d3bEct9GGl6fOtYqmqhwAlYEsRq"
					    "CjDCQyAsoZyMUr+o5lZWB9EVBSBrIiIKUMZN+rSvQpJeDvfUA0hMFgZjB/e/bsdlfNAoOfBvptoKeB+dkHL1++/PhwOPyko0bf//3vf/"
					    "+iluFpjoAj4AgsQUA25RfVe1yrq7wHV1nG14r/tTj+meV71BFwBHZAQBOxOkF3aGpXljPk+Ic6Utqa761z1xZR+E8x/Xd27lFHwBHYGQHNua/"
					    "UBPNu07knvjfi+VAHBu8jHd8p7V8K96THauNzHTg4g6T8b8pMpZH0OT+5p8S5kyPgCBwJASawmvpQYfISNmwaI8T2Cwbibzp+"
					    "2JB3lZXaCkZP4ZfVAo2JJ2WUJAxW9ixc2Ub8z76Y9Ikn4FQgIFzwYl4oxGDsQX/JmDKnbrPz3aKSJ2wDRfkWtZMv35oZqEFcQ9aEWHqs/"
					    "JvYGUWXkepjXf+tcFM3dqw3aou1LZPmL4r/"
					    "PFb2PucNyal09MikIMSlZuAyWR7pgP6mMqv0ofpf62BrgPHi9AcCjL3BPVvhxQ2oFzqYY+ihuiQCW+"
					    "Uzd9AfOIdxrDDXG21tcsNKfBkfT3X8VfHc8CkpEX2yfaOU2BpZ5CmpM7hpb3TcKv6FjipgrZ1QfQT9LPJtrbZFuTAo1O69MUjqa+"
					    "jzTOGrcka8vxMvLgYMMgY/IQOYQb2Vy89SgkE6SiqzRLZRniec+VTy9vZWrL/KY0yCPxf9J5aehyrDxYQLyL8UR2+9caw0MEWvq/"
					    "eTxANDiQFkvnJUSeWQC/kGy1QrxsRFRinW/UzhakEjr9GrRiyzR8BVaCsZ9uhfjeeS5e2YnEN6/E2NL2mr1+c4IW4aBukm7fU6cGIJwgF95J7MUA/"
					    "xRF7rwBh0KGJpxqF68VAZ5hUG6Wcdq5fRkQ8OSEvfKYNHNZuuZ9f4owJWeiuXnAG7Fa+DeKEMJtWtjoc6D56cQpT4QgfPSRB/"
					    "pgOlB1I+MjEAniie3F3FudKn8/elt/kVX+sT/eWK+EppvSvenNYynlU5C17I/LxI4xR9bLkBi/"
					    "GnrdU8JV9Pv0rjCs4k5pk7JgQGjrtO3BGapbsMv55OlLfFGBm6EKi7PWIs1Ix18LTUHzzd3r6U0sGBsfyV4goCJqtWNDCZQegbOQe9wSFeV0MZY+"
					    "kS0iz3ai9DvAAc47EJiR8T8QeFKOCtDozQQedMfhTFuhug6DtyBBli/scKqceGO+UPCinDQBwklfmHDngvoR9V6bXq0+4rHZwvJvEZlTNnrLJgT/"
					    "mkR9J0MNBZEvQms9KWyspyn0G6itR+T79KC7oSY/rNcoUL0Tc6wn6ZwjCpKVeLVzpU1Qn1VXbRGCna+ETnyDFIsZ8/"
					    "KQxeifWbCoozHtFPmIcKexcxpbFP+iA7MNDHJOQLuM9t9GpuhVgeUNhPanHjppqg4++"
					    "mCrXkqz8MSPZHbJLRv09jXa6uKLLTZ52bQh8pn4EcXGuFt7EesmLcxgj3eapMr77awKV+m/"
					    "WBvjFxbJL16jQkTMmZswh6VMKX9CX2h4H+XPEhz3WRrOIJnosGqeoFUp+G9IvuvtVB39Fx7o2BpY0vlhO/KP9/"
					    "CjFglq7oe1LemE5mjRHxwsDT55LyPpV5dh4MTzxhjCLbQfyoyxhhrORlyD4lAttF+r5eKEXV/"
					    "YyAfaLQjEILe0C+LQuKB0pggk0RG3xmaBh06equdPiiUKiTp/"
					    "OOQo2HQpZ0+UBiSVVdsyvdCDymyljZPGTi55OfK+gh9puQfpSKBd+yLZaX5iaPygn/jIIeVRcvrZWWytoxAFvIJh65fg86p28Ym0A6Zwxx8UzjS/"
					    "EHMXsoGNNJ4CMerWOEMVbziDBuqU8DHcHTMZ1ywWMcYmzDsi3WWaqLg3gvmV+"
					    "x2aYgXGCbShaFlholwM4nk7F9ocgrTqLQTDLcRtbmKAGgy3rVzqscxgTQ59BDFTYDleqJF+"
					    "llXlBozDsopH8QsuVGiXP2eXDbzcBRnj0MCL54V6kOZXU+KrvKUA+Dk3tYGNR0lVeZEquD0liaVnFROjw5cgyG5FSxIGtvP4KMnMS3KqvSJ+XM+"
					    "CBr6pfqzpIt8illy9iHKJjn8qC7zgUyYkS53uMnMW9UJ6GVhjEiXnhcyIjnxnZA0mvkMSfAsHF3upSH81zeZp7itWR+NfNXwRbDW+"
					    "V3VU0dSZQwDESoVDYTE3f1NuRqUiqOpX+"
					    "tA0CJW14sEowX4DAQtqAeL7XLHgjtprZ1jgymYDyLksLkUTnKPNTBOfFASmeSfqSQ5R5exiOFacLpvEX2wE/"
					    "1Qr8UggFpz3UsosirSc7YHrJ19Fg2rHJjsrbIaSyRr+Y1WH5LWNUvFU0ehZQxCgbZThS+"
					    "03GjMsiMoTBja0Xm6GRqjATvU23gyZcGiX6AfZVUvsQKmTCktmw7qEyYhwpzeav87igR+"
					    "ZBzNl3PqSEAsP64rhBgE9I4gAFSuoIrz1xPFB2WG0obsupctTBo+cRWtdmEp8EtUJQK0bdXIfZ+WUceG9KARV+"
					    "QhT2GW4VGGAXKMYHoDwOKwZsrnysgbR1UDrnfEjdSWovsYMVrAGBK+"
					    "3iUeJJ5X5Q0mwyDQTljm6Yr9IgnONTuoKyq0yKnCUB78FpDJltNv6SVy1DGXt4mXovJSd//q8NkUDSM3xadTI4RtfNQ/"
					    "KwteOfEuDIZ8vSD6pmHxbKTW/kYUMYXe4/"
					    "BuMUy4EkZLrpD86rDe+2J2qHP4AmuzFe2V35TWOKu5OApLZrP19Rupdh4rQM9FirLxillAS+ApvMvdeSDwOohHMKuAle8ASEfhMb/"
					    "oDyUO+oVUFjlUHxQPueiPP4+5b2xs6tAMLqqx5U3DRrFp2THkGMMavytndmh+E3KGfvWpEd1gMlVlVV8mnSscvA4KFw0SKkLxfpN+lVZLhZM2rzN/"
					    "yjtT/CKVBqNJp2IJzrL9ZbHjTfj4i0nKl+Oey5wT8grSWXRS0c3SqOfzKNAtTKWt2eodsGydY7yeEZ+IW/"
					    "u2lVzyfkFedYHDwMv6VmMByWVrJTHRMI1rV49yvIncI5ieG/p89gXvJxHWb9aZGfSTBrJjKdF80lmaXuGY7K2yEnf7KIz1c8tZUtGIWuUu4q2bGP/"
					    "0+7MWpGlOrH6eRgmpNpjDpR6ZkuDts6ZwsV6iYAPso+8sUey5aCY3R+1z+"
					    "AdW0rM5nmKFSQnxpfnpdLV7xT7uUWfJCOTMn9MYwu2kzzULjceeM6n5pn36qvcUXWi9tge+ELhIm+"
					    "iJ8AJJUQsuSHDxbqJVJZxwpx4cN1U40iF1CH2coKrf6Qm76QZyYjxP3uDFMH9VvKWy6TdcVeb1WXeUMN3oBPzHmf1c6j/"
					    "J5aOd418i2jP5duiDt3FAF7UUa/UhIDrsw6TcMGDY7P4vmxZ1AUpUqM8yNXkoRbVw+nJGaVaJz3NEThTBLibmJ5vOxMZkWeV9+dG6UxGgotx/"
					    "xCQN8GylkcyeAzg3lOUA3lW7U037ympId4XcnIEHIEdEND8WrwHs0N31rDkualefaVNvd6T6swxSs1ME3ePOAKOgCMwE4FmozSTrxd3BJoR0FX0RoW"
					    "568qmL7eRecG4fLZHyU6XgIAbpUvQciGjJjwGgIcHIbv7w4OFnVv30ViwaclDojy1/"
					    "EZpnaeNlbYFYYTCk9YK6Ruvf7hnvgWy95CHG6V7qLQNusy6P90hUTw8aCi+"
					    "nYfdlM67Yjx5fKOQO0V7Uf4Beoxkxzju1ajzPU0Erk6zW96rnRHgXSyWTEZssvJsSe3VBx7y3HUppXbzuzX0ZU8DaDJ7eKIIuKd0oorZuVt4SdX3EC"
					    "vtYrySV1XJn5UkA4TRse9r8b5jWg4qjsfGU/1n9+rFLJAuvLB7Shc4ADTp+Q5UvkTC6PB+WscY6Nw8p008JfHjfa/"
					    "e99NRgfIwVsEgKX4Wz+0gl9N8BNwozcfsrGrIAGB42MjO93VMRryk8vMfljcrVDt4QfmLuSzZwlv6yuPbTxii/"
					    "yrO83CbeWbi5XTPEPDl2z1T2JbdlQFgUxkPZejjctX9JNXjDhlfnZzjQT1VnbRXpLp4avZ5j5pBVLbTJSLgRukStS6ZZRQwSCyXwtcK4jnp+"
					    "abz0H4SjxO8AjqVx9Pi42jcubO9otq32DFkOW+dOjkCfQR8+dbH5OxTZEgwSCyn+H4Nf4iAYeFzE+90BIppxDvekNJZ6nGnzvak8Jh4I/"
					    "y1jsFvsSsPr4h2E6keXpqTI9BBwD2lDhwXc8IeDp4LYSIZibCXo5D9nWcxgxcsiVIejwgDlr4FpTz7RAVe1di32Fm64ZmZYYJf8LYUOjkCCQE3SgmK"
					    "y4nIMOTfqe4Jrvzed6J7hWKCyrZ+"
					    "p5ulm29gDwHp6QkBjNIH8czClOkRR6ABgfI73XhTrc9ANbD3IheCwJ9NTveUDAkPFyEgTyndUVvE4IIqCSv24u79Zv/ecmCUfo/"
					    "jwsILGiYuqiNwHAQ0kdmnwyBtZpTE80b82Jtjn+6YX1fAuPKvMOlpfLW/"
					    "ln41BlcW8dARcAT2QYAJLM4fKuRLC1sSX1fgzzMxDtw9DTcatmygxkvthTuyCvkHks3pXhglCY9Vtrs2m4PgDNchIN3gBThVEBA2eDL8RyBGY2vKHz"
					    "plftxu3cAQP8mDIeTOLPJtSpvvKamTuJTcZeHqsPobPOJn/xu22O0VD56HYeLwUB/"
					    "Py5wlDcmpdHTCpCDkFj6Dl8H0SAfErfo1+H6t+jzz5HfX3uOZ/zL2eCasSsKMRyx4GJX5gh6qSyLwVT5zAf2BNX/"
					    "pneuMdjbb3xNvxsdTHRie3PgpKRF9ot1N9b65pyQBcO3e6OCdKf5srwqy8idJdQGGB/I6D/BNVuwXCINCfM7WIEWRq3JG/"
					    "L5TGd49Y5Ax+AkZxAzsLdx+lhIM0ElSudDPyYLnUeCp5LVnuXoSKY8xCf5cwJ/"
					    "0CihBZbiYcAHh+1borTOOdQ6e6HTtPBGb9JQ+"
					    "BpD5x1EltYdcyDdYplpxInFzoxTbq74zNdGXWvboVaZWYSCNq9AmChvgfyrJY3IO6YRXQ1YvjeOEuGkcoKvbOxXAx/"
					    "ohLNBH7s0MFccTea0Dr6lDEU8zDr2Lh/KZIxgkPKdNltGRF85ES98pg0e1GV1vxqnLCMu+hUvHIB/kozwUYu9bpW/"
					    "zKB0lvtDBpzKI83QySg+kfPrHAOAZm+TyKs7VPp2/L73Nr/"
					    "han+gvV8RXSutc8ea2lPGsylnwQ+"
					    "bnRRqn4LvVBiyGn3Y24Sf5evpVGldwJjFPozMhMHDceeKO0CzdZfj1dKK8LcbI0IVA3e0RY6FmrIOnpf7g6Xb2pZQGBoxjHmBVEPBYvDKBwQJC58g5"
					    "6A3O5Xk1t8JUeYFj1n6VZyI+KOh2qD3lV7/"
					    "No3QmP8pi3Q1Q9IM+hf7EfN73QnlsoFP+"
					    "oJAyDMS96Ecxfh3bfaU454sp9ntQzpyxyoIlciadkKaDgc6SYNZkznkXcZbtDNDVpD719Ku0oCsxp98sWbgQ8W2osF+msDapx/"
					    "pS1UlsZ4sx8okaR45Bin3+SWHwSnIZFGc82ieJDzrvXMR0zh7pg+zAOB+"
					    "bkG8u7qN9vBrNXZYJkFt8gwdB39W6ICUwIKvf5lE6V1cU2XE9dW4KfaR8BnJwrRXe6hyi329DbOBHZfm2NYZgFqkObvVbhdYH+"
					    "saEskk2i18sPCVnzjPoRAlf0pfYH4wwfxbQ80SVtkhO8QPL1QNU7Q/"
					    "pF919q4O+o+PcIwPLMF6UDrahH3lc+YmUPqaTxWMkNfA+kvpUpOenwfDEBMYHsh3otwLkYKzkZcg+"
					    "JQLz1TrPBbrOTzaKV13WCDJvlKer9UR7KOV2oAxr2HR1F0/"
					    "K2YTv5Cm9o9Co5INClnQMfiOWVL01u2XGkHz6NZeY+"
					    "Pnk5wpKH4J8ChmIGJkpYpPTjO2onAWjoBPVbXXtl8oZjELettoE43LQMg5KrFk62xKgI5vSc/"
					    "0edI48eEuBdA5+XAgDnopTH09ZQfAO01ghIdKYTkwvTWNE7SBfuHlgzGOIcbM+FVnpFG/"
					    "H5OaiyDjE2IZlWyyFvCVeMWs8EO8lY2ucaTc3XGC7SevO9jBKGIF8AloPXyjyyk4awjFhH6q+"
					    "Tc7ESgogvcwLCo15B4U2SOhnbpQ4Z58Ht90MXOIdI7MHh3jRHwZt7oUxSdJVPrYH7yaKPFvlhCeydfYjJhqaLWfkh5wdvaivvbGgND6JOyZvKVvZXY"
					    "x6Lg/ydS524j/"
					    "4F03Km9RJbLB1jFBudJkW+"
					    "U0F8OBucykP57m8U3xSvngxlsewTmUXRloM7yzW1yrNIGLg9K5yszipsADAKkPlAGGpxB7GLZmxHANr8MNgKsPdhPIKS3UIoDsTQGVZcnC1Cm1QSHH"
					    "6Ywrl6onrn1OYQCpHGZsIbKQmo6Q8ziHykSMZssh/VA6Vh/dBZU12+k3a0LMfFB8leBk/"
					    "Cio+KKfyaI++d3RCvZxUbq2csKOtLSbnmH6DPOpv0pHaZNIlz0nxg/"
					    "KRGd2wzO8YSqXN0cnoGBHvr8SP+cNykj3KdLFR2jsd9KNKKlvihUxcvG3ZdlCZMKcU5vJW+d1RIvIh51pifIYL2JUiAMNEe6RjMQk0lPN/"
					    "kQHLDIwELjR7MLYxafxx33FZX+sY+zAYA4r+lYSnwTNQX8aDtl/"
					    "FQuRhnJhk1OUK80zHQWm3hJGeK6QcdQGWwVQzSB+pDHtQLH0eKcwHeIscTBheBWAvB/"
					    "4Aj8ue90VJs2lSTtoUVzOi6AQ5exT7tVZO+AZZew3MTxjTLzotl6EYmdzoMkluJBdpGAozuDoN1KqTljES+"
					    "qI2wDc3SDTEWKmN34PKohuWZM8UD0ZS8bccxieWYVnPRahlea+i60lt4UDQHgYyxGNfasyxG/"
					    "mcqJVpSQODMFavW0q3lFGnUU45WKpVVdbW0HQkrJWVVnNPAYZJ3MlTWUAIVlVhh5THQMwHaCffTlSOAZQPojxuxWiDCXJQea5YDJpESmuRg6s1y8Ia"
					    "/8RrbkT8JuVUmVadrJZTbQWDp3D1AI08mvSrsuiFSZu3i9diRh8d8Y+7piugbtKJeKCzXG95HD4HlUFuayukZT94N0+"
					    "y8xRVvZ5ulAYfDGagWhnL2zNUu2DZmXMj7eHxb+"
					    "rFXY00tluWhOYqAaGAYECUVl7NDkojD1e2erWBwc7EgDPXNBhQ9eVza1PxFjmYNJNG0njeUbiFnHYBaREhNyAt5cfKoJe3RYH/"
					    "FOel0dhSJ6l9jYdyDL9WP2jrnCk5FlsJeSdGSZ0vPwyGMsuBFWSUorliDi49QqH9frhavMgMEXtgj7LmRuVQPYxpftXOqp5UdK2c6I+"
					    "7Z03GJup0KwDQSWc/Sec86mDLNpYgn1pjO+gkeAniCwadi4/"
					    "SLO8sDVPE8qCwI7dhvTR88PLlSwBj34c9haZBtbSxNfXUNzym8oq3hqXX3QgB180wkMIGY8UeYnU5Olzz9HMkE3tAPPiZL40XdTzixB70g7vylGZ3X"
					    "J11gzQbteNUcN0M4yxsmLBsFt/VFsRw51bkRHmQa7VBKrtxb4xS2XE/"
					    "dwTuEQLcLAl3lu5Rn6e6ijy7eH9ulKag93xHYCUC8ibw8tkXtRsjKznebfUoB/"
					    "Lsst1zfbfieeuOwGUgECdw0yMzp46IZNlVjk2Mkjr5v1MH0vvnCDgCx0FA9mDwFZ+"
					    "WHmxllFZ1oqWjXsYRcAQuAwH2lD6Iolp4GZK7lI6AI3BKCPzZOoOn9Hs8sdDyPDxTBOReP5RoPFQI2a1qHjjsPHah8xvlc4eFp9h5xeKN0nbdT1AbT"
					    "peJwK8m9ibLN2Pm4b1BgJel0+1cxcNDcOo9T0cnUjpPo/NwLS+3hncAU6ZHHIGdEPBHAnYC9sTZ8nUFvCAj3lvjQTgMUEnp/"
					    "cQyw88dgT0QcE9pD1RPnydeUvVdw0rXbQlXyZqfJMOHAfxNB0tFXh1Ky0HFbVlJPm/"
					    "X83WF8P6Y4k4XgoB7Shei6FxMTXS+D5XvH2Gk+HZVxwDo3DynTV64FD8+AMdXJzFEGEXb11I00I/"
					    "6fR3zXynOudOFIeBG6cIUXoobDQ8b2bUvYeIlld8qKlk0nasd9q2G/uzhoHyedt76zxWa+uaFTgsBX76dlj6O2hsZgsdqkOXU0Jcwq/"
					    "tJqscyi69uzvGgnqpO2ixXXTy13DPDW+Mw4kNsh1jO0jy8AATcKF2AkmsiarJjkPgccPjSYTw/"
					    "KMzfZxraT2LZxfKK8izxMCDcubO9otqnOjBkOW+dvifxII/+5PtcGDAeQ3C6MAR8+XZhCkdcGQEMAMspvl/"
					    "Dv7dgWPjQ2zsdgWIa8Y43pHSWetypw9OBWr5TTjm8ItpNJB54aRDG72A8FVKOtOekO10WAu4pXZa+TVo+6od3QphIxiAsnxSyv/"
					    "MsZvA2OFHK4xFhwIJ3pfCgPPueDkZk7HvreD54ZmaY4Be8LYXwC3+uoBBjh9c1tKRUltM5I+BG6Zy1OyCbDMOfBrJCsvK5O5Zu1U+"
					    "U5V9aKIthwds66JznoMxYkUQaS7d8zyikxx+MHbf/"
					    "fbmWo3KhcTdKF6r4DcUuv1OOgcn3hlqawvvqLBNbKnmZ80QAo2RXsLSfcJ6iulR7ICDvJt1RW8Jf9VnO3Yc/"
					    "V1gintdpR4CLUvCkMUoMCjY9SWQ97+QIHA2BuKxLe1RHa9gbOjUEbtQh7NA3V6fWM++PI+AIXDYCbpQuW/"
					    "8uvSNwcgj4RvfJqeR+dUjLL3vWiAcnuZXPZ1GqD0neL8m8t3eFgHtKd4X8GbQr48NzTnz4jeePeCyARwJ44ZZ9SidHYBECbpQWweaVZHj451c+"
					    "PZKeLVKcGyWcs2Hp5AgsQsCN0iLYvJIQ4FGA/IVaA+WNIjcyUDyx7eQIzEbAjdJsyLxCRIBbuLVn22w/"
					    "iXwnR2A2Am6UZkPmFRq9oEeOlCOwBAE3SktQ8zpmcMYetvXlm4+TRQi4UVoEm1dqQODDhjJexBHoIYBR+iCmWtgr5AmOQIFAbS/"
					    "JipgXxXNLTo5AKwLpzygxSr/HWha2MvFyF4pAvPWP9LUlmqXZhveFouRiz0TgVyvvyzdDwsO5CPAC9+NKJfOU/"
					    "FMkFXA8aRoBN0rTGHmJOgLfKZlvJ5XEv6L8nHlTZb6fOwKjCLhRGoXHM4cQkNHhy5LvFH5uZRRn6ca/"
					    "ljy3NA8dgbkI+Au5cxHz8jkCeEW8gPtEIRvbhJ/q/GeFTo7AIgTcKC2CzSuBgIzPrYKh7247SI7AIgR8+bYINq/"
					    "kCDgCeyHgRmkvZJ2vI+AILELAjdIi2LySI+AI7IWAG6W9kHW+joAjsAgBN0qLYPNKjoAjsBcCbpT2Qtb5OgKOwCIEMEr+"
					    "Z5SLoPNKjoAjsCEC6c8oMUqPdfBNZXtnacN2nJUj4Ag4Ak0I8KXS8G13X7414eWFHAFH4FgIuFE6FtLejiPgCDQh4K+ZNMHkhYYQ0Ksm/"
					    "meUQ+B4+iIE3FNaBJtXAgEZJP8zSh8KmyPgRmlzSC+DoQyS/"
					    "xnlZaj66FK6UTo65GfToP8Z5dmo8rQEcaN0Wvq4T73hFm7tDwTs29zkOzkCsxFwozQbMq+"
					    "gpZv9OcAYGP7c2xg6njeIgBulQWg8YwQBMzh85G2IWgzXUF1Pv2AE3ChdsPJ3Ft3/jHJngM+VPUbJ/oTSwnOV1eXaDoHaXpJxNy/K/4zSEPGwBQH/"
					    "M8oWlLxMHQHtKdmyrbZEszTb8K4z8VRHoIuA/xllFw8/W4CA/xnlAtC8yjQCvqc0jZGXqCPgf0ZZx8VTVyLgRmklgJdaXUs4/"
					    "zPKS1X+znL7C7k7A3zm7P3PKM9cwXchnhulu0D9TNqMG97+Z5Rnos9TEcOXb6eiCe+HI+AIBATcKPlAcAQcgZNCwI3SSanDO+"
					    "MIOAJulHwMOAKOwEkh4EbppNThnXEEHAE3Sj4GHAFH4KQQwCj5n1GelEq8M5eGgB6teHwOMq+UI/0ZJc8pAQh/"
					    "AkeivWipqJMj4AjsjYAm8ldqA8dg0xeYxZcvf/JyNPP7Ix3fKY05vic9Vhuf6/h6QSP0Fzv0DZ6SkyPgCNwBAkxgNfuhwu93aB4j9H00EH8T/"
					    "x92aKPDUm0Fo6eQP5VYTCdllCQMVhbL7nQmCEifeAJOBQLCBS/"
					    "mhUIMxh7EK0BGzKmjrIIkD17SX6N81v6scNFrJmoQV4vXC7D0WPk3sTOKLiPVx7r+W+GmbuxYb9QWf6TIpPmL4j+"
					    "Plb3PeUNyKh09MikIecGWgctksQ+1/U1lVulD9b/W8U8d/"
					    "jqKgM2IscdypUrC62NlvNDBHEMP1SUR2CqfuYP+wDmMY4W53miLf59ZTeLL+HiqA8OTG76cN32izUU6X+QpqTO4aW903Cr+"
					    "hY4qYMpvItVH0M8i36Y6GxUKg0Lt3huDpL6GPs+UvypnxJtPkHAxYJAx+AkZwAzqrVx+lhIM0lFSmSWyjfI84cynkhdDUiXlMSbBn4v+"
					    "k1ohleFiwgXkX4qjt944VhqYotfV+0nigaEM//enkDlbJZVDLuQbLFOtGBMXGaVY9zOFqwWNvEavGrHMHgFXoa1k2KN/NZ5Llrdjcg7pkc/"
					    "ZLmmr1+c4IW4aBukm7fU6cGIJwgF95J7MUA/xRF7rwBh0KGLJpOeoXjxUhnmFQfpZx+pldOSDA9LSd8rgUc2m69k1/"
					    "qiAlV7knv3BIsUYsFvxOogXymBS3ep4qPPgySlEgS90/EK6jmc6UHog5SMTA+CJ4sndVZwrfTp/X3qbX/"
					    "G1PtFfroivlNa74s1pLeNZlbPghczPizRO0ceWG7AYf9pazVPy9fSrNK7gTOKfdDAhMHDcdeKO0CzdZfj1dKK8LcbI0IVA3e0RY6FmrIOnpf7g6fb2"
					    "pZQODozlrxRXEDBZtaKByQxC38g56A0O8boayhhLl5BmuVd7GeIF4BiPTUj8mIg/KEQBb3VghA46Z/KjKNbdAEXfkSPIEPM/"
					    "Vkg9Ntwpf1BIGQbiXvSjGL+O7b5SnPPFFPs9KGfOWGXBHjmTHknTwUBnSTBrMue8K3GW+6nLQz4AAAqrSURBVAzSVaQ+9fSrtKArMabfLFe4EH2jI+"
					    "yXKaxN6rF+VHUS29lijHyixpFjkGKff1IYvJJcBsUZj+gnzEOFvYuY0tgnfZAdGOhjEvLNxT3072phLwGF/"
					    "aQWN26qCTr+bqpQS776w4Bkf8QmGf37NNbl6ooiO33WuSn0kfIZyMG1Vngb6yErxm2QVPYfOjAEs0h1cKnfKrQ+"
					    "0DcmlE2yWfxi4Sk5c55Bj0r4kr7E/"
					    "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"
					    "l6QEe+"
					    "u8UBc7bWI9G6jFfbQEViDgBulNeidb128pMH3FAuxMV7hKxBFup86AosQ8OXbItjOu5I8ovIVAYwU37zqfIoi85wWvXh53ii6dEsRcE9pKXIXUi8aH"
					    "jaya1/ExEsqv1l0Ici4mHsh4EZpL2TPgK8M0mOJwX7S0Bcxq/"
					    "tJqseXHvI9qTNAw0U4FgK+fDsW0vesnWiQ+Cxw+OJhPD8ozN9rwvCku3SZiDxO8IpzlWdz/BMd3Lkb/"
					    "Fa78pwcgYCAe0o+EHoIyJDgIfEYAN+34V9cMCx87M2+tnmIaUrqfcCMpR536uyZpjnf8Yaf04Uj4J7ShQ+AAfH56B8PUBImkqEJXpFC3mp/"
					    "FjN4K5wo5fGIMGDBu1J4UJ5tmuNVTX2rnSpOF46AG6ULHwA18WVI/"
					    "lRLtzTl9z5ub3llqLL8WwvlMVR4Wwed8xyUGSuSnByBhIAbpQSFR3ZCoPyON95U6zNQO3XJ2Z4yAm6UTlk7Z9A3eUT++"
					    "skZ6PGYIvhG9zHR9rYcAUdgEgE3SpMQeQFHwBE4JgK+"
					    "fDsm2mfYlpZnPFwJ8QwSzyLxhYH8WSbynByBZgTcU2qGyguWCMj48MgA31DiIUvusHF37QfFec7JyRFYhIAbpUWweSUZHv5MkddJ+"
					    "LhbIMV5YJJzHrx0cgQWIeBGaRFsXkkIcFet89WAiMobhXz0jYcpnRyB2Qi4UZoNmVeICNwoTK+"
					    "dZKjYfhL5To7AbATcKM2GzCs0ekGPHClHYAkCbpSWoOZ1zOCwhzREvnwbQsbTRxFwozQKj2euQODDFXW96gUj4EbpgpW/"
					    "QvTaXpKxMy+K55acHIHZCLhRmg2ZV4i3/gGitkSzNNvwdsAcgVkIuFGaBZcXzhDgzwIeZ+cWNU/J/"
					    "0zAEPFwFgJulGbB5YUzBL5TnM+QlMQfDPyceVNlvp87AqMIuFEahcczhxCQ0eEjbe8U8vnbQIqzdHuq4/n7FP91BOYj4C/kzsfMa/"
					    "yBAF4RL+A+UcjGNuGnOq896a0sJ0dgGgE3StMYeYkBBGR8bpVV+zeTgRqe7AhMI+"
					    "DLt2mMvIQj4AgcEQE3SkcE25tyBByBaQTcKE1j5CUcAUfgiAi4UToi2N6UI+AITCPgRmkaIy/hCDgCR0TAjdIRwfamHAFHYBqB/"
					    "JGAX3SLt6zxvdL8f7tKVPzcEXAEFiMgm/KLKj8eYoBR4sXJoWdN/KXKIeQ83RFwBJYiYP+AU63//2MYId96fmtzAAAAAElFTkSuQmCC",
					"text/latex" :
					    ["$\\displaystyle \\left[\\begin{matrix}\\frac{L_{x} \\left(- c du_{dx} \\rho + dP_{dx}\\right) + c \\eta_{5} "
					     "\\rho u_{t} \\left(M^{2} - 1\\right)}{2 L_{x} c^{2}}\\\\\\frac{L_{x} \\left(c du_{dx} \\rho - dP_{dx}\\right) + "
					     "c \\eta_{5} \\rho u_{t} \\left(M^{2} - 1\\right)}{2 L_{x} c \\rho}\\\\0\\\\0\\\\\\frac{L_{x} \\left(- c du_{dx} "
					     "\\rho + dP_{dx}\\right) + c \\eta_{5} \\rho u_{t} \\left(M^{2} - 1\\right)}{2 L_{x}}\\\\0\\end{matrix}\\right]$"],
					"text/plain" : [
						"⎡                                    ⎛ 2    ⎞⎤\n", "⎢Lₓ⋅(-c⋅du_dx⋅ρ + dP_dx) + c⋅η₅⋅ρ⋅uₜ⋅⎝M  - 1⎠⎥\n",
						"⎢────────────────────────────────────────────⎥\n", "⎢                        2                   ⎥\n",
						"⎢                  2⋅Lₓ⋅c                    ⎥\n", "⎢                                            ⎥\n",
						"⎢                                   ⎛ 2    ⎞ ⎥\n", "⎢Lₓ⋅(c⋅du_dx⋅ρ - dP_dx) + c⋅η₅⋅ρ⋅uₜ⋅⎝M  - 1⎠ ⎥\n",
						"⎢─────────────────────────────────────────── ⎥\n", "⎢                  2⋅Lₓ⋅c⋅ρ                  ⎥\n",
						"⎢                                            ⎥\n", "⎢                     0                      ⎥\n",
						"⎢                                            ⎥\n", "⎢                     0                      ⎥\n",
						"⎢                                            ⎥\n", "⎢                                    ⎛ 2    ⎞⎥\n",
						"⎢Lₓ⋅(-c⋅du_dx⋅ρ + dP_dx) + c⋅η₅⋅ρ⋅uₜ⋅⎝M  - 1⎠⎥\n", "⎢────────────────────────────────────────────⎥\n",
						"⎢                    2⋅Lₓ                    ⎥\n", "⎢                                            ⎥\n",
						"⎣                     0                      ⎦"
					]
				},
				"execution_count" : 12,
				"metadata" : {},
				"output_type" : "execute_result"
			} ],
			"source" : [ "dQ_dx_inflow_x1_lower_zerou = simplify(S * linv_zerou * L_inflow_x1_lower_zerou)\n", "dQ_dx_inflow_x1_lower_zerou" ]
		},
		{
			"cell_type" : "code",
			"execution_count" : 13,
			"metadata" : {},
			"outputs" : [ {
				"name" : "stdout",
				"output_type" : "stream",
				"text" : [
					"dQ_dx[0] = (1.0/2.0)*(L_x*(-c*du_dx*rho + dP_dx) + c*eta_5*rho*u_t*(std::pow(M, 2) - 1))/(L_x*std::pow(c, 2));\n",
					"dQ_dx[1] = (1.0/2.0)*(L_x*(c*du_dx*rho - dP_dx) + c*eta_5*rho*u_t*(std::pow(M, 2) - 1))/(L_x*c*rho);\n",
					"dQ_dx[2] = 0;\n", "dQ_dx[3] = 0;\n",
					"dQ_dx[4] = (1.0/2.0)*(L_x*(-c*du_dx*rho + dP_dx) + c*eta_5*rho*u_t*(std::pow(M, 2) - 1))/L_x;\n", "dQ_dx[5] = 0;\n"
				]
			} ],
			"source" : ["print(cxxcode(dQ_dx_inflow_x1_lower_zerou, assign_to='dQ_dx'))"]
		}
	],
	"metadata" : {
		"kernelspec" : {"display_name" : "Python 3", "language" : "python", "name" : "python3"},
		"language_info" : {
			"codemirror_mode" : {"name" : "ipython", "version" : 3},
			"file_extension" : ".py",
			"mimetype" : "text/x-python",
			"name" : "python",
			"nbconvert_exporter" : "python",
			"pygments_lexer" : "ipython3",
			"version" : "3.11.5"
		},
		"orig_nbformat" : 4
	},
	"nbformat" : 4,
	"nbformat_minor" : 2
}
